/* ============================================================================
   TORQ · 全站样式（PHP 站点 + 后台共用）
   设计语言：碳黑 / 纸感米白 / 扭矩橙；Barlow Condensed 标题 + Plex 正文 + Plex Mono 编号
   两套主题：:root 浅色（默认）· [data-theme="dark"] 夜间
   ========================================================================== */
@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@400;500;600;700&family=IBM+Plex+Sans+Thai:wght@200;300;400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root{
  color-scheme: light;
  --ink:#F7F6F2; --ink-2:#FFFFFF; --surf:#FFFFFF; --surf-2:#F2F0EA; --surf-3:#E7E4DB;
  --line:rgba(17,19,24,.10); --line-2:rgba(17,19,24,.17); --line-3:rgba(17,19,24,.30);
  --txt:#15171C; --txt-2:#4B525E; --txt-3:#7C8491;
  --torq:#F4510D; --torq-ink:#B93C06; --torq-2:#C4420A; --on-accent:#1B0900;
  --amber:#8F5B00; --mint:#14825A; --mint-2:#0E6E4A; --on-ok:#FFFFFF;
  --danger:#C62428; --danger-2:#A81E22;
  --fill-1:rgba(17,19,24,.032); --fill-2:rgba(17,19,24,.055); --fill-3:rgba(17,19,24,.085);
  --accent-fill:rgba(244,81,13,.09); --accent-line:rgba(244,81,13,.30);
  --ok-fill:rgba(20,130,90,.10); --ok-line:rgba(20,130,90,.30);
  --warn-fill:rgba(163,105,0,.11); --warn-line:rgba(163,105,0,.32);
  --bad-fill:rgba(198,36,40,.08); --bad-line:rgba(198,36,40,.28);
  --shadow:0 1px 2px rgba(17,19,24,.04), 0 12px 32px -20px rgba(17,19,24,.22);
  --r-s:8px; --r:13px; --r-l:20px;
  --font-d:'Barlow Condensed','IBM Plex Sans Thai','PingFang SC',system-ui,sans-serif;
  --font-b:'IBM Plex Sans Thai','PingFang SC',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --font-m:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --nav-h:62px; --sidebar:248px;
  --media:radial-gradient(120% 100% at 50% 0%,#FBFAF7,#E9E6DF 72%);
  --media-ink:#6F6A60;
}

[data-theme="dark"]{
  color-scheme: dark;
  --ink:#0A0B0E; --ink-2:#0F1116; --surf:#14171D; --surf-2:#1A1E26; --surf-3:#222731;
  --line:rgba(255,255,255,.085); --line-2:rgba(255,255,255,.16); --line-3:rgba(255,255,255,.28);
  --txt:#E9ECF1; --txt-2:#A3AAB5; --txt-3:#6C7482;
  --torq:#FF5A18; --torq-ink:#FF8B45; --torq-2:#FF8B45; --on-accent:#180800;
  --amber:#FFC24B; --mint:#2FD98A; --mint-2:#54E6A3; --on-ok:#06251A;
  --danger:#FF4D4F; --danger-2:#FF8B8C;
  --fill-1:rgba(255,255,255,.032); --fill-2:rgba(255,255,255,.06); --fill-3:rgba(255,255,255,.09);
  --accent-fill:rgba(255,90,24,.13); --accent-line:rgba(255,90,24,.40);
  --ok-fill:rgba(47,217,138,.14); --ok-line:rgba(47,217,138,.32);
  --warn-fill:rgba(255,194,75,.12); --warn-line:rgba(255,194,75,.30);
  --bad-fill:rgba(255,77,79,.10); --bad-line:rgba(255,77,79,.30);
  --shadow:0 1px 0 rgba(255,255,255,.04), 0 20px 40px -28px #000;
  --media:radial-gradient(120% 100% at 50% 0%,#242B35,#101318 72%);
  --media-ink:#7E8794;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;overflow-x:clip;scroll-behavior:smooth}
body{
  margin:0;background:var(--ink);color:var(--txt);font-family:var(--font-b);
  font-weight:300;font-size:15px;line-height:1.65;overflow-x:clip;
  -webkit-font-smoothing:antialiased;transition:background .25s,color .25s;
}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{margin:0;font-family:var(--font-d);font-weight:600;letter-spacing:-.01em;line-height:1.1}
p{margin:0 0 1em}
ul,ol{margin:0 0 1em;padding-left:1.1em}
code{font-family:var(--font-m);font-size:.86em;background:var(--fill-2);padding:1px 5px;border-radius:4px}
::selection{background:var(--accent-fill)}

/* ---------------- 布局骨架 ---------------- */
.wrap{width:min(1240px,100% - 40px);margin-inline:auto}
@media(max-width:640px){.wrap{width:calc(100% - 28px)}}
.stack{display:grid;gap:14px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row.between{justify-content:space-between}
.spacer{flex:1}
.mono{font-family:var(--font-m);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--txt-3)}
.kicker{font-family:var(--font-m);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--torq-ink)}
.muted{color:var(--txt-3)}
.dim{color:var(--txt-2)}
.tiny{font-size:11.5px;color:var(--txt-3)}
.nowrap{white-space:nowrap}
.center{text-align:center}
.right{text-align:right}
.mt0{margin-top:0}.mt8{margin-top:8px}.mt16{margin-top:16px}.mt24{margin-top:24px}.mt32{margin-top:32px}
.mb0{margin-bottom:0}.mb8{margin-bottom:8px}.mb16{margin-bottom:16px}

/* ---------------- 顶部导航（站点） ---------------- */
.site-head{position:sticky;top:0;z-index:40;background:var(--ink);border-bottom:1px solid var(--line);
  backdrop-filter:saturate(1.2) blur(10px)}
.site-head .bar{height:var(--nav-h);display:flex;align-items:center;gap:18px}
.brand-lock{display:flex;align-items:center;gap:9px;flex:0 0 auto}
.brand-lock .mark{width:26px;height:26px;color:var(--torq)}
.brand-lock .word{font-family:var(--font-d);font-weight:700;font-size:22px;letter-spacing:.01em}
.site-nav{display:flex;gap:2px;align-items:center;margin-left:8px}
.site-nav a{padding:8px 11px;border-radius:8px;font-size:13.5px;color:var(--txt-2);transition:.15s}
.site-nav a:hover{background:var(--fill-1);color:var(--txt)}
.site-nav a[aria-current="page"]{color:var(--torq-ink);background:var(--accent-fill)}
.site-tools{display:flex;align-items:center;gap:8px;margin-left:auto}
@media(max-width:900px){.site-nav{display:none}}

/* ---------------- 按钮 ---------------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;
  height:40px;padding:0 16px;border-radius:10px;border:1px solid var(--line-2);
  background:var(--surf);color:var(--txt);font-size:13.5px;cursor:pointer;
  transition:.15s;white-space:nowrap;font-weight:400}
.btn:hover{border-color:var(--line-3);background:var(--fill-1)}
.btn.primary{background:var(--torq);border-color:var(--torq);color:#fff;font-weight:500}
.btn.primary:hover{filter:brightness(1.06)}
.btn.ghost{background:transparent}
.btn.danger{border-color:var(--bad-line);background:var(--bad-fill);color:var(--danger-2)}
.btn.ok{border-color:var(--ok-line);background:var(--ok-fill);color:var(--mint-2)}
.btn.sm{height:32px;padding:0 11px;font-size:12.5px;border-radius:8px}
.btn.xs{height:27px;padding:0 9px;font-size:11.5px;border-radius:7px}
.btn.block{width:100%}
.btn[disabled]{opacity:.45;pointer-events:none}
.btn-row{display:flex;gap:8px;flex-wrap:wrap}

/* 主题切换：两个图标常驻，靠 CSS 切换，不依赖 JS 也能显示正确图标 */
.theme-btn .ic-dark{display:none}
[data-theme="dark"] .theme-btn .ic-light{display:none}
[data-theme="dark"] .theme-btn .ic-dark{display:block}

/* ---------------- 卡片 / 面板 ---------------- */
.card{background:var(--surf);border:1px solid var(--line);border-radius:var(--r);padding:18px;box-shadow:var(--shadow)}
.card.tight{padding:14px}
.card.flush{padding:0;overflow:hidden}
.panel{background:var(--surf);border:1px solid var(--line);border-radius:var(--r-l);overflow:hidden}
.panel > .hd{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line);background:var(--fill-1)}
.panel > .hd b{font-weight:500;font-size:14px}
.panel > .bd{padding:18px}
.panel > .ft{padding:12px 18px;border-top:1px solid var(--line);background:var(--fill-1)}

/* ---------------- 徽章 / 状态 ---------------- */
.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:6px;
  font-size:11.5px;border:1px solid var(--line-2);color:var(--txt-2);background:var(--fill-1);white-space:nowrap}
.badge.ok{color:var(--mint-2);border-color:var(--ok-line);background:var(--ok-fill)}
.badge.warn{color:var(--amber);border-color:var(--warn-line);background:var(--warn-fill)}
.badge.bad{color:var(--danger-2);border-color:var(--bad-line);background:var(--bad-fill)}
.badge.accent{color:var(--torq-2);border-color:var(--accent-line);background:var(--accent-fill)}
.badge.solid{background:var(--txt);color:var(--ink);border-color:var(--txt)}
.dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:0 0 auto}

/* 适配结论徽章：V4.2 四级 + 未选车，颜色写死一处，避免各页说法不一 */
.fitbadge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:6px;font-size:11.5px;
  border:1px solid var(--line-2);background:var(--fill-1);color:var(--txt-2);white-space:nowrap}
.fitbadge.exact{color:var(--mint-2);border-color:var(--ok-line);background:var(--ok-fill);font-weight:500}
.fitbadge.conditional{color:var(--amber);border-color:var(--warn-line);background:var(--warn-fill)}
.fitbadge.unknown,.fitbadge.none{color:var(--txt-3);border-style:dashed}
.fitbadge.incompatible{color:var(--danger);border-color:var(--bad-line);background:var(--bad-fill)}
/* 兼容旧类名：老页面还在用 fit / check / mismatch */
.fitbadge.fit{color:var(--mint-2);border-color:var(--ok-line);background:transparent}
.fitbadge.check{color:var(--amber);border-color:var(--warn-line);background:var(--warn-fill)}
.fitbadge.mismatch{color:var(--txt-3);border-style:dashed}

/* ---------------- 表单 ---------------- */
.field{display:grid;gap:6px;margin-bottom:14px}
.field > label{font-size:12.5px;color:var(--txt-2)}
.field .hint{font-size:11.5px;color:var(--txt-3)}
.field .err{font-size:11.5px;color:var(--danger-2)}
input[type=text],input[type=tel],input[type=email],input[type=password],input[type=number],
input[type=date],input[type=datetime-local],select,textarea{
  width:100%;height:42px;padding:0 12px;border-radius:10px;border:1px solid var(--line-2);
  background:var(--ink-2);color:var(--txt);font-size:14px;transition:.15s
}
textarea{height:auto;min-height:96px;padding:10px 12px;line-height:1.6;resize:vertical}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0h10L5 6z' fill='%237C8491'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;padding-right:32px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--torq);box-shadow:0 0 0 3px var(--accent-fill)}
input.invalid,select.invalid{border-color:var(--bad-line);background:var(--bad-fill)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
@media(max-width:680px){.form-grid{grid-template-columns:1fr}}
.field.span2{grid-column:span 2}
@media(max-width:680px){.field.span2{grid-column:auto}}
.chk{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;color:var(--txt-2);cursor:pointer;user-select:none}
.chk input{width:16px;height:16px;accent-color:var(--torq);flex:0 0 auto;margin:0}

/* ---------------- 配置中心（V4.2 §6） ---------------- */
.cfgstat{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:14px 0 18px}
.cfgstat-i{position:relative;display:grid;gap:1px;padding:12px 14px;border:1px solid var(--line);
  border-radius:var(--r);background:var(--surf);transition:.16s;overflow:hidden}
.cfgstat-i::after{content:'';position:absolute;left:0;right:0;bottom:0;height:2px;background:transparent;transition:.16s}
.cfgstat-i:hover{border-color:var(--line-3);transform:translateY(-1px)}
.cfgstat-i.on{border-color:var(--accent-line);background:var(--accent-fill)}
.cfgstat-i.on::after{background:var(--torq)}
.cfgstat-i b{font-size:23px;line-height:1.1;font-family:var(--font-m);font-weight:600;letter-spacing:-.02em;color:var(--txt)}
.cfgstat-i.on b{color:var(--torq-2)}
.cfgstat-i .lb{font-size:12.5px;color:var(--txt-2)}
.cfgstat-i .hint{font-size:10.5px;color:var(--txt-3);line-height:1.35}
@media(max-width:1100px){.cfgstat{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){.cfgstat{grid-template-columns:repeat(2,1fr);gap:8px}.cfgstat-i b{font-size:19px}.cfgstat-i .hint{display:none}}

.cfgtabs{display:flex;gap:4px;overflow-x:auto;padding:4px;margin-bottom:16px;border-radius:12px;
  border:1px solid var(--line);background:var(--surf-2);scrollbar-width:none;
  -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent);
  mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent)}
.cfgtabs::-webkit-scrollbar{display:none}
.cfgtabs a{padding:8px 14px;border-radius:9px;font-size:13.5px;color:var(--txt-2);white-space:nowrap;transition:.15s}
.cfgtabs a:hover{background:var(--fill-2);color:var(--txt)}
.cfgtabs a[aria-current="true"]{background:var(--surf);color:var(--txt);box-shadow:var(--shadow);font-weight:500}

.cov{width:76px;height:6px;margin:0 auto 3px;border-radius:99px;background:var(--fill-3);overflow:hidden}
.cov i{display:block;height:100%;border-radius:99px;background:var(--mint);transition:width .3s}
.cov-warn i{background:var(--amber)}
.cov-bad i{background:var(--danger)}

.mkrow{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.mkbox{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px;border:1px solid var(--line-2);
  border-radius:8px;background:var(--ink-2);font-family:var(--font-m);font-size:12px;cursor:pointer;transition:.14s}
.mkbox:hover{border-color:var(--line-3)}
.mkbox input{width:12px;height:12px;margin:0;accent-color:var(--torq)}
.mkbox input:checked + span{color:var(--torq-2);font-weight:500}
.mkbox:has(input:checked){border-color:var(--accent-line);background:var(--accent-fill)}

.miss{color:var(--danger-2);font-size:11px;border-bottom:1px dashed var(--bad-line)}
.rowon{background:var(--accent-fill)}
.i18ntbl td{max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.i18ntbl td:first-child{max-width:190px}
.checkline{display:flex;gap:9px;align-items:flex-start;font-size:13px;color:var(--txt-2);margin-bottom:10px}
.checkline input{margin-top:3px}

/* ---------------- 表格 ---------------- */
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surf)}
table.tbl{width:100%;border-collapse:collapse;font-size:13px;min-width:560px}
table.tbl th{text-align:left;font-weight:500;font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--txt-3);padding:10px 14px;border-bottom:1px solid var(--line);background:var(--fill-1);white-space:nowrap}
table.tbl td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:middle}
table.tbl tr:last-child td{border-bottom:0}
table.tbl tbody tr:hover{background:var(--fill-1)}
table.tbl .num{font-family:var(--font-m);font-size:12.5px;white-space:nowrap}
table.tbl .t-title{font-weight:500;color:var(--txt);max-width:280px}
table.tbl .t-sub{font-size:11.5px;color:var(--txt-3);margin-top:2px}

/* 手机上表格改卡片：横向滚动在 390px 下只会看到半截，不如纵向堆叠 */
@media(max-width:640px){
  .tbl-wrap{border:0;background:transparent;overflow:visible}
  table.tbl{display:block;min-width:0;font-size:13px}
  table.tbl thead{display:none}
  table.tbl tbody{display:grid;gap:10px;padding:0;background:transparent}
  table.tbl tr{display:grid;gap:5px;padding:13px 14px;border:1px solid var(--line);border-radius:var(--r);
    background:var(--surf);box-shadow:var(--shadow)}
  table.tbl tbody tr:hover{background:var(--surf)}
  table.tbl td{border:0;padding:0;display:block}
  table.tbl td.right,table.tbl td.num.right{text-align:left}
  /* 卡片模式下 .center 也归左：竖排后「年款 / 排量 / 状态」这些居中列的标签会缩到中间，
     和左边那些左对齐的字段错开一截，读起来像两栏 */
  table.tbl td.center{text-align:left}
  table.tbl td:empty,table.tbl td:has(> .tiny:only-child:empty){display:none}
  table.tbl .t-title{max-width:none}
  table.tbl td[data-label]::before{content:attr(data-label);display:block;font-size:10px;
    letter-spacing:.1em;text-transform:uppercase;color:var(--txt-3);margin-bottom:1px}
  table.tbl td .btn{width:100%;margin-top:2px}
  table.tbl .badge{margin-top:1px}
}

/* ---------------- 商品卡 ---------------- */
.lgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:16px}
@media(max-width:1024px){.lgrid{grid-template-columns:repeat(3,1fr);gap:12px}}
@media(max-width:820px){.lgrid{grid-template-columns:repeat(2,1fr);gap:10px}}
@media(max-width:380px){.lgrid{grid-template-columns:1fr}}
.lcard{display:flex;flex-direction:column;background:var(--surf);border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;transition:.18s;box-shadow:var(--shadow)}
.lcard:hover{border-color:var(--accent-line);transform:translateY(-2px)}
.lcard .thumb{position:relative;aspect-ratio:4/3;background:var(--media);overflow:hidden}
.lcard .thumb img{width:100%;height:100%;object-fit:cover}
.lcard .thumb .fitbadge{position:absolute;left:8px;bottom:8px;background:var(--ink-2);backdrop-filter:blur(4px)}
.lcard .thumb .flag{position:absolute;right:8px;top:8px}
.lcard .bd{padding:11px 12px 13px;display:flex;flex-direction:column;gap:5px;flex:1}
.lcard .t{font-size:13.5px;line-height:1.45;font-weight:400;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lcard .meta{font-size:11.5px;color:var(--txt-3);display:flex;gap:6px;flex-wrap:wrap}
.lcard .price{font-family:var(--font-d);font-size:21px;font-weight:600;letter-spacing:-.01em;margin-top:auto}
.lcard .price small{font-family:var(--font-b);font-size:11px;color:var(--txt-3);font-weight:400;margin-left:4px}

/* ---------------- 空状态 ---------------- */
.empty{padding:48px 20px;text-align:center;color:var(--txt-3);border:1px dashed var(--line-2);border-radius:var(--r)}
.empty b{display:block;color:var(--txt);font-family:var(--font-d);font-size:20px;margin-bottom:6px}

/* ---------------- flash ---------------- */
.flash{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:80;display:grid;gap:8px;width:min(440px,calc(100% - 32px))}
.flash .f{padding:11px 14px;border-radius:10px;border:1px solid var(--line-2);background:var(--ink-2);
  box-shadow:var(--shadow);font-size:13px;display:flex;gap:8px;align-items:flex-start}
.flash .f.ok{border-color:var(--ok-line);background:var(--ok-fill);color:var(--mint-2)}
.flash .f.bad{border-color:var(--bad-line);background:var(--bad-fill);color:var(--danger-2)}
.flash .f.warn{border-color:var(--warn-line);background:var(--warn-fill);color:var(--amber)}

/* ---------------- 站点页脚 ---------------- */
.site-foot{border-top:1px solid var(--line);margin-top:56px;padding:28px 0 40px;color:var(--txt-3);font-size:12px}
.site-foot .cols{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
.site-foot a:hover{color:var(--txt)}

/* ============================================================================
   后台 shell：桌面左栏 + 移动端顶栏抽屉
   ========================================================================== */
.shell{display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);min-height:100vh}
.side{border-right:1px solid var(--line);background:var(--ink-2);position:sticky;top:0;height:100vh;
  display:flex;flex-direction:column;padding:14px 12px;gap:4px;overflow-y:auto}
.side .brand-lock{padding:6px 8px 14px}
.side .grp{font-family:var(--font-m);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--txt-3);padding:14px 10px 6px}
.side a.item{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:9px;font-size:13.5px;
  color:var(--txt-2);transition:.14s}
.side a.item:hover{background:var(--fill-1);color:var(--txt)}
.side a.item[aria-current="page"]{background:var(--accent-fill);color:var(--torq-2);font-weight:500}
.side a.item .n{margin-left:auto;font-family:var(--font-m);font-size:10.5px;background:var(--fill-2);
  border-radius:5px;padding:1px 6px;color:var(--txt-2)}
.side a.item[aria-current="page"] .n{background:var(--accent-fill);color:var(--torq-2)}
.side .foot{margin-top:auto;padding:10px;border-top:1px solid var(--line);font-size:11.5px;color:var(--txt-3)}
.side .foot b{color:var(--txt);font-weight:500;display:block;font-size:12.5px}
.main{min-width:0;display:flex;flex-direction:column}
.topbar{height:56px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;
  padding:0 20px;position:sticky;top:0;background:var(--ink);z-index:30}
.topbar .crumb{font-size:13px;color:var(--txt-3)}
.topbar .crumb b{color:var(--txt);font-weight:500}
.topbar .tools{margin-left:auto;display:flex;gap:8px;align-items:center}
.page{padding:22px clamp(14px,2.4vw,28px) 48px}
.page > .hd{display:flex;align-items:flex-end;gap:14px;margin-bottom:18px;flex-wrap:wrap}
.page > .hd h1{font-size:clamp(24px,3vw,32px)}
.page > .hd .sub{font-size:13px;color:var(--txt-3);max-width:62ch}
.burger{display:none}

@media(max-width:1024px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;inset:0 auto 0 0;width:270px;z-index:60;transform:translateX(-100%);
    transition:transform .22s;box-shadow:0 0 0 100vmax rgba(0,0,0,0);height:100dvh}
  body.nav-open .side{transform:none;box-shadow:0 0 60px rgba(0,0,0,.28)}
  .burger{display:inline-flex}
  .page{padding:16px 14px 40px}
  .topbar{padding:0 14px;height:54px}
}

/* 数据块 */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.kpis > div{background:var(--surf);padding:14px 16px}
.kpis .k{font-family:var(--font-m);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-3)}
.kpis .v{font-family:var(--font-d);font-size:26px;font-weight:600;margin-top:2px;white-space:nowrap}
.kpis .v small{font-size:12px;color:var(--txt-3);font-weight:400;letter-spacing:.02em}
.kpis .v.bad{color:var(--danger-2)}
.kpis .v.ok{color:var(--mint-2)}
@media(max-width:640px){.kpis{grid-template-columns:1fr 1fr}.kpis .v{font-size:22px}}

/* 迷你条形图 */
.bars{display:flex;align-items:flex-end;gap:6px;height:86px}
.bars .b{flex:1;background:var(--accent-fill);border:1px solid var(--accent-line);border-radius:4px 4px 0 0;
  min-height:4px;position:relative}
.bars .b span{position:absolute;bottom:-18px;left:0;right:0;text-align:center;font-size:9.5px;color:var(--txt-3);
  font-family:var(--font-m)}
.bars .b i{position:absolute;top:-15px;left:0;right:0;text-align:center;font-size:9.5px;color:var(--txt-2);
  font-family:var(--font-m);font-style:normal}

/* 进度条 */
.prog{height:6px;border-radius:99px;background:var(--fill-3);overflow:hidden}
.prog i{display:block;height:100%;background:var(--torq);border-radius:99px}

/* 分隔 / 说明块 */
.rule{height:1px;background:var(--line);margin:18px 0}
.note{border-left:2px solid var(--torq);padding:2px 0 2px 14px;color:var(--txt-2);font-size:13px;margin:14px 0}
.note b{color:var(--txt);font-weight:500}
.note.bad{border-left-color:var(--danger)}
.note.bad b{color:var(--danger-2)}
.note.ok{border-left-color:var(--mint)}
.dl{display:grid;grid-template-columns:auto 1fr;gap:8px 18px;font-size:13px}
.dl dt{color:var(--txt-3);font-size:12px}
.dl dd{margin:0;color:var(--txt)}

/* 证据 / 素材缩略 */
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.thumbs figure{margin:0;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--media)}
.thumbs img{aspect-ratio:1;object-fit:cover;width:100%}
.thumbs figcaption{font-size:10px;color:var(--txt-3);padding:4px 6px;background:var(--surf)}

/* 分段控件（tab） */
.seg{display:inline-flex;padding:3px;gap:2px;background:var(--fill-2);border-radius:9px}
.seg a{padding:6px 12px;border-radius:7px;font-size:12.5px;color:var(--txt-2)}
.seg a[aria-current="true"]{background:var(--surf);color:var(--txt);box-shadow:0 1px 2px rgba(0,0,0,.06)}

/* 时间线（来源链 / 订单轨迹） */
.tline{display:grid;gap:0;font-size:13px}
.tline .it{display:grid;grid-template-columns:20px 1fr;gap:10px;padding-bottom:14px;position:relative}
.tline .it::before{content:"";position:absolute;left:9px;top:16px;bottom:0;width:1px;background:var(--line)}
.tline .it:last-child::before{display:none}
.tline .dotm{width:19px;height:19px;border-radius:50%;border:1px solid var(--line-2);display:grid;place-items:center;
  font-size:10px;font-family:var(--font-m);color:var(--txt-3);background:var(--surf)}
.tline .it.ok .dotm{border-color:var(--ok-line);background:var(--ok-fill);color:var(--mint-2)}
.tline .it.bad .dotm{border-color:var(--bad-line);background:var(--bad-fill);color:var(--danger-2)}
.tline .it.wait .dotm{border-style:dashed}
.tline .it b{font-weight:500;display:block;font-size:13px}
.tline .it span{font-size:11.5px;color:var(--txt-3)}

/* 抽屉（详情页右侧） */
.split{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:18px;align-items:start}
/* 比例修饰只在≥1025px 生效：小屏一律单列，绝不用内联样式覆盖（内联会压过媒体查询） */
@media(min-width:1025px){
  .split.s17{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}
  .split.s16{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
  .split.s155{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr)}
  .split.s15{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}
  .split.s145{grid-template-columns:minmax(0,1.45fr) minmax(0,1fr)}
  .split.s13{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
  .split.s340{grid-template-columns:minmax(0,1fr) 340px}
}
@media(max-width:1024px){.split{grid-template-columns:1fr}}
.sticky{position:sticky;top:74px}

/* 首页 */
.hero{position:relative;padding:clamp(32px,5vw,64px) 0 clamp(26px,4vw,44px);overflow:hidden}
.hero::before{content:"";position:absolute;inset:-10% -20% auto;height:70%;
  background:radial-gradient(60% 70% at 80% 0%,var(--accent-fill),transparent 62%);z-index:0}
.hero .inner{position:relative;z-index:1}
.hero h1{font-size:clamp(38px,6.4vw,74px);line-height:1.04;letter-spacing:-.02em;max-width:16ch}
.hero .lead{font-size:clamp(14px,1.5vw,17px);color:var(--txt-2);max-width:52ch;margin-top:16px}
.hero .stats{display:flex;gap:26px;flex-wrap:wrap;margin-top:26px}
.hero .stats div{font-family:var(--font-d);font-size:26px;font-weight:600}
.hero .stats span{display:block;font-family:var(--font-b);font-size:11.5px;color:var(--txt-3);font-weight:400}

/* 车库选择器 */
.garage-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:14px;border:1px solid var(--line);
  border-radius:var(--r);background:var(--surf);box-shadow:var(--shadow)}
.garage-bar .sel{display:flex;gap:8px;flex-wrap:wrap;flex:1;min-width:0}
.garage-bar select{height:38px;min-width:118px;flex:1 1 118px}
/* 手机档五层改单列：两列排会把「品牌→车系→年款→车型」读成之字形，看不出先后 */
@media(max-width:640px){
  .garage-bar{padding:10px}
  .garage-bar .sel{display:grid;grid-template-columns:1fr;gap:8px;width:100%}
  .garage-bar select,.garage-bar input[type=text]{width:100%;min-width:0}
  .garage-bar .btn{width:100%;justify-content:center}
}

/* 五层选车面板（V4.2 约束 03） */
.pickers{border:1px solid var(--line);border-radius:var(--r-l);background:var(--surf);
  padding:14px 16px 12px;box-shadow:var(--shadow)}
.pickers-hd{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.pickers-hd b{font-size:14px;font-weight:500}
.pickers .garage-bar{padding:0;border:0;background:transparent;box-shadow:none;border-radius:0}
.stepbar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.stepdot{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 3px;border-radius:99px;
  border:1px dashed var(--line-2);font-size:11.5px;color:var(--txt-3);transition:.15s}
.stepdot i{display:grid;place-items:center;width:17px;height:17px;border-radius:50%;font-style:normal;
  font-family:var(--font-m);font-size:10.5px;background:var(--fill-2);color:var(--txt-3)}
.stepdot.done{color:var(--mint-2);border-style:solid;border-color:var(--ok-line);background:var(--ok-fill)}
.stepdot.done i{background:var(--mint);color:var(--on-ok)}
.stepdot.now{color:var(--torq-2);border-style:solid;border-color:var(--accent-line);background:var(--accent-fill)}
.stepdot.now i{background:var(--torq);color:var(--on-accent)}
.mkchips{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:12px;padding-top:10px;
  border-top:1px dashed var(--line)}
.chip{display:inline-flex;align-items:center;padding:5px 11px;border:1px solid var(--line-2);border-radius:99px;
  font-size:12px;color:var(--txt-2);background:var(--surf);transition:.14s;white-space:nowrap}
.chip:hover{border-color:var(--line-3);color:var(--txt)}
.chip.on{border-color:var(--accent-line);background:var(--accent-fill);color:var(--torq-2);font-weight:500}
.mkchips .chip{font-family:var(--font-m);font-size:11.5px;padding:4px 10px}
.fitlegend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 14px;padding:9px 12px;
  border:1px solid var(--line);border-radius:var(--r);background:var(--surf-2)}
@media(max-width:640px){.pickers{padding:12px}.stepdot{font-size:10.5px;padding:2px 8px 2px 2px}}


/* 首页：市场 + 语言入口 */
.hero-markets{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:20px;padding-top:16px;
  border-top:1px dashed var(--line-2)}
.hero-markets .hm-lb{font-size:11px;letter-spacing:.06em;color:var(--txt-2);margin-right:2px;font-weight:400}
.hero-markets .hm-sep{width:1px;height:16px;background:var(--line-2);margin:0 8px}
.hero-markets .chip{border-color:var(--line-2);background:transparent}
.hero-markets .chip i{font-style:normal;font-size:10px;color:var(--txt-3);margin-left:5px}
.hero-markets .chip-lang[data-on]{border-color:var(--accent-line);background:var(--accent-fill);color:var(--torq-2);font-weight:500}
@media(max-width:560px){.hero-markets .hm-sep{display:none}.hero-markets{gap:5px}}

/* 筛选侧栏 */
.filterbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.filterbar .chip{padding:6px 11px;border:1px solid var(--line-2);border-radius:99px;font-size:12.5px;
  color:var(--txt-2);background:var(--surf);cursor:pointer}
.filterbar .chip.on{border-color:var(--accent-line);background:var(--accent-fill);color:var(--torq-2)}

/* 打印 */
@media print{.site-head,.site-foot,.side,.topbar,.btn{display:none!important}.shell{grid-template-columns:1fr}}

/* ============================================================================
   V3.0 补充：语言切换、译文提示、手机端可滚动导航、四业务线专用块
   ========================================================================== */

/* 语言切换：五语常显，当前语言高亮。用 <a> 而不是 JS，禁脚本也能切 */
/* 语言切换：地球图标 + 下拉面板（<details>，无 JS 也能用） */
.langpop{position:relative;display:inline-block;flex:0 0 auto}
/* summary 只负责外观。真正的横排交给 .lp-in —— <summary> 在部分 WebKit 上
   会被强制成 list-item，写在它身上的 inline-flex 会被无视，导致三行堆叠。 */
.langpop > summary{display:block;height:30px;padding:0 8px;cursor:pointer;
  list-style:none;border:1px solid var(--line-2);border-radius:8px;background:var(--fill-1);color:var(--txt-2);
  font-size:12px;user-select:none;white-space:nowrap;-webkit-details-marker:none}
.langpop .lp-in{display:inline-flex;align-items:center;gap:5px;height:100%;white-space:nowrap}
.langpop > summary::-webkit-details-marker{display:none}
.langpop > summary:hover{color:var(--txt);border-color:var(--line-3)}
.langpop[open] > summary{color:var(--torq-2);border-color:var(--accent-line);background:var(--accent-fill)}
.langpop .lang-code{font-family:var(--font-m);font-size:10.5px;letter-spacing:.01em;
  text-transform:none;color:inherit;white-space:nowrap}
.langpop .lang-caret{transition:transform .18s ease;opacity:.7}
.langpop[open] .lang-caret{transform:rotate(180deg)}
.lang-menu{position:absolute;right:0;top:calc(100% + 7px);z-index:80;min-width:216px;padding:6px;
  background:var(--surf);border:1px solid var(--line-2);border-radius:12px;
  box-shadow:0 18px 40px -18px rgba(17,19,24,.34), 0 2px 6px rgba(17,19,24,.08);
  animation:langin .16s ease}
@keyframes langin{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.lang-menu-hd{padding:5px 8px 7px;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--txt-3);
  font-family:var(--font-m)}
.lang-menu a{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;color:var(--txt);font-size:13px}
.lang-menu a:hover{background:var(--fill-2)}
.lang-menu a[aria-current="true"]{background:var(--accent-fill);color:var(--torq-2);font-weight:500}
.lang-menu .cd{margin-left:auto;font-family:var(--font-m);font-size:10px;color:var(--txt-3);
  letter-spacing:.01em;text-transform:none}
.lang-menu .ck{color:var(--torq-2);font-size:12px}
.langpop-admin > summary{height:28px}
/* 兼容老类名（外部链接进来的老页面） */
.langsw{display:inline-flex;align-items:center;gap:1px;padding:2px;border:1px solid var(--line-2);
  border-radius:8px;background:var(--fill-1)}
.langsw a{display:inline-flex;align-items:center;height:24px;padding:0 6px;border-radius:6px;
  font-family:var(--font-m);font-size:10px;letter-spacing:.06em;color:var(--txt-3)}
.langsw a:hover{color:var(--txt);background:var(--fill-2)}
.langsw a[aria-current="true"]{background:var(--surf);color:var(--torq-2);box-shadow:0 1px 2px rgba(0,0,0,.06)}

/* 「以下为原文」提示条：非中文界面打开未翻译页面时插入 */
.i18n-note{display:flex;align-items:center;gap:8px;margin:0;padding:8px 14px;font-size:12px;
  color:var(--txt-2);background:var(--warn-fill);border-bottom:1px solid var(--warn-line)}
.i18n-note .mono{color:var(--amber)}

/* 手机端：导航不再整体隐藏，改为横向滚动，保证四个前台都能进 */
@media(max-width:900px){
  .site-head .bar{flex-wrap:wrap;height:auto;padding:9px 0 7px;gap:8px}
  .site-tools{margin-left:auto}
  /* display 必须显式写回来：上面 max-width:900px 那条已把它设成 none，
     这里只改 order/width/overflow 是不生效的（曾导致手机上一条导航都没有）。 */
  .site-nav{display:flex;order:3;width:100%;margin-left:0;gap:2px;overflow-x:auto;padding-bottom:2px;
    scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .site-nav::-webkit-scrollbar{display:none}
  .site-nav a{flex:0 0 auto;white-space:nowrap}
  /* 真溢出时右缘淡出，提示「还能往右滑」；不溢出时（900px 放得下）不挂这个 class */
  .site-nav.is-scroll{
    -webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 26px),transparent 100%);
    mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 26px),transparent 100%);
  }
}

/* 手机上顶栏横向空间紧：语言切换只留地球图标（和 App 的 dense 一致），
   当前语言在展开菜单里打勾，不会因为挤不下而折行。 */
@media(max-width:640px){
  .langpop > summary{padding:0 7px}
  .langpop .lang-code{display:none}
  .langpop .lp-in{gap:3px}
}

/* 技术规格表：数值 + 证据等级，左右对齐 */
.spec{display:grid;gap:0;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.spec > div{display:grid;grid-template-columns:1.1fr 1fr auto;gap:10px;align-items:center;
  padding:9px 13px;border-bottom:1px solid var(--line);font-size:13px;background:var(--surf)}
.spec > div:last-child{border-bottom:0}
.spec .k{color:var(--txt-2);font-size:12.5px}
.spec .v{font-family:var(--font-d);font-size:17px;font-weight:600}
.spec .v small{font-family:var(--font-b);font-size:11px;color:var(--txt-3);font-weight:400;margin-left:3px}
@media(max-width:560px){.spec > div{grid-template-columns:1fr auto}.spec .k{grid-column:1/-1;font-size:11px}}

/* 模拟图容器：边框 + 说明，避免被当成实拍 */
.figure{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--surf)}
.figure svg{display:block;width:100%;height:auto}
.figure figcaption{display:flex;gap:8px;align-items:center;padding:9px 13px;font-size:11.5px;
  color:var(--txt-3);border-top:1px solid var(--line);background:var(--fill-1)}

/* 预算分列：零件与工时永远不并成一个数 */
.budget{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.budget > div{background:var(--surf);padding:13px 15px}
.budget .k{font-family:var(--font-m);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--txt-3)}
.budget .v{font-family:var(--font-d);font-size:23px;font-weight:600;margin-top:2px}
.budget .v small{font-size:11px;color:var(--txt-3);font-weight:400}
@media(max-width:520px){.budget{grid-template-columns:1fr}}

/* 证据等级徽章 */
.ev{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:5px;font-size:10.5px;
  font-family:var(--font-m);letter-spacing:.04em;border:1px solid var(--line-2);color:var(--txt-2);background:var(--fill-1)}
.ev.ok{color:var(--mint-2);border-color:var(--ok-line);background:var(--ok-fill)}
.ev.warn{color:var(--amber);border-color:var(--warn-line);background:var(--warn-fill)}
.ev.bad{color:var(--danger-2);border-color:var(--bad-line);background:var(--bad-fill)}

/* 十步工序：横向步骤条，手机上折成两列 */
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.steps > div{background:var(--surf);padding:10px 11px;font-size:12px;position:relative}
.steps .n{font-family:var(--font-m);font-size:9.5px;color:var(--txt-3);letter-spacing:.1em}
.steps .t{margin-top:2px;color:var(--txt-2)}
.steps > div.on{background:var(--accent-fill)}
.steps > div.on .t{color:var(--torq-2);font-weight:500}
.steps > div.done .t{color:var(--mint-2)}
.steps > div.done::after{content:"✓";position:absolute;right:8px;top:7px;font-size:10px;color:var(--mint)}
@media(max-width:760px){.steps{grid-template-columns:1fr 1fr}}

/* 矩阵表：国家 × 业务线 */
.matrix{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surf)}
table.mx{border-collapse:collapse;width:100%;min-width:520px;font-size:12.5px}
table.mx th,table.mx td{padding:9px 12px;border-bottom:1px solid var(--line);text-align:center;white-space:nowrap}
table.mx th:first-child,table.mx td:first-child{text-align:left;font-weight:500}
table.mx thead th{font-family:var(--font-m);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--txt-3);background:var(--fill-1)}
table.mx .y{color:var(--mint-2)}
table.mx .n{color:var(--txt-3)}
table.mx tr:last-child td{border-bottom:0}

/* 榜单行 */
.rank{display:grid;gap:10px}
.rank .r{display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center;
  padding:12px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--surf)}
.rank .no{font-family:var(--font-d);font-size:22px;font-weight:700;color:var(--torq);text-align:center}
.rank .nm{font-weight:500}
.rank .meta{font-size:11.5px;color:var(--txt-3);margin-top:2px}
.rank .score{font-family:var(--font-d);font-size:20px;font-weight:600}
.rank .score small{font-size:10px;color:var(--txt-3);font-weight:400;display:block;text-align:right}
@media(max-width:560px){.rank .r{grid-template-columns:28px 1fr;row-gap:4px}.rank .score{grid-column:2;text-align:left}}
