/* ============================================================
 * nfs.css — 灵感竞速风格流程层（闸门/LOGO/简报/车库/加载）
 * 叠加在工程界面之上：body.flow-on 时实验室虚化作背景
 * 公用基元（配色变量 / .fl-bg 背景 / #flWipe 幕布 / .fl-cta 按钮）
 * 已抽取至 ../../css/nfs-base.css，本文件只保留风洞专属样式。
 * ============================================================ */

body.flow-on #adminLink { display: none !important; }

/* ── 流程层根 ── */
#flow { position: fixed; inset: 0; z-index: 600; display: none; }
#flow.on { display: block; }

/* 顶栏车库按钮（竞速入口） */
#garageBtn {
  background: #182231; border: 1px solid #33445c; color: #b6cadf;
  padding: 6px 13px; border-radius: 3px; cursor: pointer; font-size: 13.5px;
  white-space: nowrap;
}
#garageBtn:hover { border-color: var(--fl-acc2); color: #ffe3ad; }

/* 实验室里不再展示车型/上传区（已移至车库流程页；区块保留供脚本写入） */
#labCarZone { display: none !important; }

/* "？"上传位卡片 */
.fl-car.upl { border-style: dashed; border-color: #2c4a63; background: rgba(10,18,28,.82); }
.fl-car.upl.sel { border-color: var(--fl-acc2); box-shadow: 0 0 24px rgba(255,176,32,.22), inset 0 0 30px rgba(255,176,32,.05); }
.fl-car.custom { border-color: #35506a; }

/* 上传按钮（折叠层/右侧面板共用）：三角度一组 */
.fl-up-box { margin-top: 12px; }
.fl-up-box .fl-up-btn { margin-top: 0; }
.fl-up-box .fl-up-btn + .fl-up-btn { margin-top: 8px; }
.fl-up-btn {
  display: block; text-align: center; cursor: pointer;
  padding: 10px 12px; border: 1px dashed #3a5a75; color: #9fd8ea;
  letter-spacing: 2px; font-size: 13px; transform: skewX(-6deg);
  transition: border-color .2s, color .2s;
}
.fl-gr-info > .fl-up-btn, .fl-gr-fold-in > .fl-up-btn { margin-top: 12px; }
.fl-up-btn:hover { border-color: var(--fl-acc); color: var(--fl-acc); }
.fl-up-btn input { display: none; }
.fl-up-btn b { font-weight: 700; margin-left: 8px; letter-spacing: 1px; }
.fl-up-btn b.ok { color: #52ff9a; }
.fl-up-btn b.miss { color: #62809a; }

/* ═══ 报告单：竞速风格皮肤（内容与打印逻辑不变，仅外观） ═══ */
#reportModal .box {
  position: relative;
  background: linear-gradient(165deg, #0e1a26 0%, #0a121c 55%, #070d15 100%);
  border: 1px solid #22384c; border-top: 3px solid var(--fl-acc);
  clip-path: polygon(0 0, calc(100% - 22px) 0, 100% 22px, 100% 100%, 0 100%);
  padding: 26px 30px 30px;
  overflow-x: hidden;   /* 窄屏下绝不出横向滚动条 */
}
#reportBody .rp-head { border-bottom: 1px solid #22384c; padding-bottom: 14px; }
#reportBody .rp-head h2 {
  font-size: 32px; font-weight: 900; font-style: italic; letter-spacing: 2px;
  color: #fff; transform: skewX(-6deg); transform-origin: left center;
  text-shadow: 0 0 24px rgba(34,211,238,.45);
}
#reportBody .rp-head h2::before { content: '▸ '; color: var(--fl-acc); }
#reportBody .rp-meta { font-family: Consolas, monospace; font-size: 12.5px; letter-spacing: 1px; color: #6fa3bd; }
#reportBody .rp-meta b { color: #d8f2ff; }
#reportBody .rp-badge {
  border: 1px solid rgba(255,176,32,.5); background: rgba(255,176,32,.08);
  color: var(--fl-acc2); transform: skewX(-10deg); border-radius: 0; padding: 4px 14px;
}
#reportBody h3 {
  font-family: Consolas, monospace; font-size: 14px; letter-spacing: 3px;
  color: var(--fl-acc); border-left: 4px solid var(--fl-acc);
  padding: 3px 0 3px 10px; margin: 22px 0 10px; transform: skewX(-8deg);
}
#reportBody .rp-table th {
  background: rgba(34,211,238,.08); color: var(--fl-acc); border: none;
  border-bottom: 1px solid rgba(34,211,238,.35); font-family: Consolas, monospace;
  font-size: 12px; letter-spacing: 1px;
}
#reportBody .rp-table td {
  border: none; border-bottom: 1px solid #1c2e3e; font-family: Consolas, monospace;
  font-size: 13.5px; color: #cfe4f2;
}
#reportBody .rp-table tr:hover td { background: rgba(34,211,238,.05); }
#reportBody .rp-table td.hl {
  color: var(--fl-acc); font-size: 22px; font-style: italic; font-weight: 900;
  text-shadow: 0 0 14px rgba(34,211,238,.5);
}
#reportBody .rp-table td.hl small { color: #7fa6c0; font-size: 11px; }
#reportBody .rp-note { color: #8fa6b8; border-left: 2px solid #22384c; padding-left: 10px; }
#reportBody #rpChart { background: #0a1420; border: 1px solid #1e3448; border-radius: 0; }
#reportBody .score-card {
  border: 1px solid #22384c; border-left: 4px solid var(--fl-acc);
  background: linear-gradient(200deg, rgba(13,26,40,.9), rgba(8,14,22,.95));
  padding: 16px 20px;
  clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 0 100%);
}
#reportBody .score-num {
  font-size: 62px; font-weight: 900; font-style: italic; line-height: 1.05;
  text-shadow: 0 0 26px currentColor;
}
#reportBody .score-num small { font-size: 18px; }
#reportBody .score-grade {
  display: inline-block; padding: 6px 18px; transform: skewX(-12deg);
  border-width: 1px !important; background: rgba(255,255,255,.04);
  letter-spacing: 2px;
}
#reportBody .cmp-row .cmp-name { color: #9db8ca; font-size: 13px; }
#reportBody .cmp-row .cmp-bar {
  background: #0d1824; border: 1px solid #1e3448; border-radius: 0;
  height: 14px; transform: skewX(-18deg); overflow: hidden;
}
#reportBody .cmp-row .cmp-bar i {
  background: repeating-linear-gradient(115deg, #0ea5c4 0 10px, #22d3ee 10px 18px);
  box-shadow: 0 0 10px rgba(34,211,238,.4);
}
#reportBody .cmp-row.self .cmp-bar i {
  background: repeating-linear-gradient(115deg, #d98b12 0 10px, #ffb020 10px 18px);
  box-shadow: 0 0 10px rgba(255,176,32,.4);
}
#reportBody .cmp-row .cmp-cd { color: var(--fl-acc); }
#reportBody .cmp-row.self .cmp-cd { color: var(--fl-acc2); }
/* 窄屏：收紧表格字号内距，宽表不撑破容器 */
/* 打印：回归素色黑白（style.css 打印规则负责文字转黑） */
@media print {
  #reportModal .box { clip-path: none; }
  #reportBody * {
    background: transparent !important; box-shadow: none !important;
    text-shadow: none !important; border-color: #bbb !important;
  }
  #reportBody .cmp-bar i { background: #888 !important; }
  #reportBody #rpChart { border: 1px solid #999; }
}

/* ── 屏幕切换 ── */
.fl-scr { position: absolute; inset: 0; display: none; opacity: 0; }
.fl-scr.on { display: flex; opacity: 1; animation: flIn .5s ease both; }
@keyframes flIn { from { opacity: 0; transform: scale(1.02); } to { opacity: 1; transform: none; } }

/* 切屏斜切幕布 #flWipe 已抽取至 ../../css/nfs-base.css（全园共用） */

/* 实验室推近：流程层退场时画面由微缩放推至原大 */
#app { transition: filter .6s ease, transform .8s cubic-bezier(.2,.8,.3,1); }
body.flow-on #app { filter: blur(5px) brightness(.45) saturate(.7); transform: scale(.985); }

/* ── 闸门（横竖屏提示页） ── */
#flGate { align-items: center; justify-content: center; }
/* 子元素逐个上浮入场（旋转图标自带动画，不参与） */
#flGate.on .fl-gate > *:not(.fl-rotate) { animation: flUp .65s cubic-bezier(.2,.8,.3,1) backwards; }
#flGate.on .fl-gate > *:nth-child(2) { animation-delay: .08s; }
#flGate.on .fl-gate > *:nth-child(3) { animation-delay: .16s; }
#flGate.on .fl-gate > *:nth-child(4) { animation-delay: .24s; }
#flGate.on .fl-gate > *:nth-child(5) { animation-delay: .34s; }
@keyframes flUp { from { opacity: 0; transform: translateY(26px); } }
.fl-gate { text-align: center; position: relative; padding: 24px; }
.fl-rotate { width: 120px; height: 120px; margin: 0 auto 22px; display: none; position: relative; }
.fl-ph {
  position: absolute; left: 50%; top: 50%; width: 34px; height: 62px; margin: -31px 0 0 -17px;
  border: 3px solid var(--fl-ink); border-radius: 7px; background: rgba(34,211,238,.08);
}
.fl-rotate::after {
  content: '⟳'; position: absolute; right: -34px; bottom: -8px;
  color: var(--fl-acc); font-size: 34px; font-style: normal;
}
.fl-gate-t { font-size: 30px; font-weight: 800; color: var(--fl-ink); letter-spacing: 6px; transform: skewX(-6deg); }
.fl-gate-t b { color: var(--fl-acc); text-shadow: 0 0 18px rgba(34,211,238,.55); }
.fl-gate-e { font-family: Consolas, monospace; font-size: 12px; color: #5d7d95; letter-spacing: 5px; margin: 10px 0 30px; }
.fl-gate-foot {
  margin-top: 46px; font-family: Consolas, monospace; font-size: 11px;
  color: #3f5a70; letter-spacing: 3px;
}
@media (orientation: landscape) {
  .fl-rotate { display: none !important; }
  .fl-gate-t { display: none; }
  .fl-gate-e { display: none; }
  .fl-gate-foot { margin-top: 30px; }
}

/* CTA / 幽灵按钮 .fl-cta .fl-ghost 已抽取至 ../../css/nfs-base.css */
/* 闸门主按钮：呼吸辉光（#flGate 为风洞流程层专属） */
#flGate .fl-cta { animation: flBreath 2.2s ease-in-out infinite; }
@keyframes flBreath {
  0%, 100% { box-shadow: 0 0 22px rgba(34,211,238,.25), inset 0 0 18px rgba(34,211,238,.08); }
  50%      { box-shadow: 0 0 46px rgba(34,211,238,.6),  inset 0 0 30px rgba(34,211,238,.2); }
}
/* 竖屏继续：仅竖屏显示（横竖屏都有入口，提示保留） */
/* ── LOGO 动画：逐字母砸落 + 故障闪烁 + 冲击波 ── */
#flLogo { align-items: center; justify-content: center; }
.fl-logo-box { text-align: center; position: relative; }
.fl-logo {
  font-size: 108px; font-weight: 900; font-style: italic; letter-spacing: 12px;
  color: #fff; transform: skewX(-8deg);
  text-shadow: 0 0 34px rgba(34,211,238,.75), 0 0 90px rgba(34,211,238,.35);
}
.fl-logo b { display: inline-block; opacity: 0; will-change: transform, filter; }
.fl-logo b.dot { color: var(--fl-acc); }
#flLogo.go .fl-logo b {
  animation: flLtr .62s cubic-bezier(.2,.9,.3,1.25) backwards;
  animation-delay: calc(.12s + var(--i) * 80ms);
}
@keyframes flLtr {
  0%   { opacity: 0; transform: translateY(-56px) rotate(7deg) scale(1.9); filter: blur(12px); }
  58%  { opacity: 1; transform: none; filter: blur(0); }
  70%  { opacity: .35; }
  80%  { opacity: 1; }
  88%  { opacity: .55; text-shadow: 6px 0 0 rgba(255,60,80,.5), -6px 0 0 rgba(60,160,255,.5); }
  100% { opacity: 1; transform: none; }
}
/* 字母落定后整体辉光脉冲 */
#flLogo.go .fl-logo { animation: flLogoPulse 1.6s ease .75s infinite; }
@keyframes flLogoPulse {
  0%, 100% { text-shadow: 0 0 34px rgba(34,211,238,.75), 0 0 90px rgba(34,211,238,.35); }
  50%      { text-shadow: 0 0 16px rgba(34,211,238,.45), 0 0 130px rgba(34,211,238,.6); }
}
/* 冲击波环：最后一个字母落定时扩散 */
.fl-logo-ring {
  position: absolute; left: 50%; top: 34%; width: 12px; height: 12px; margin: -6px 0 0 -6px;
  border: 3px solid rgba(34,211,238,.85); border-radius: 50%;
  opacity: 0; pointer-events: none;
}
#flLogo.go .fl-logo-ring { animation: flRing 1.1s cubic-bezier(.15,.6,.3,1) 1.05s backwards; }
@keyframes flRing {
  0%   { opacity: .95; transform: scale(.4); }
  100% { opacity: 0;  transform: scale(30); }
}
.fl-logo-sub {
  font-family: Consolas, monospace; font-size: 15px; letter-spacing: 14px;
  color: var(--fl-acc2); margin-top: 18px; opacity: 0;
}
.fl-logo-cn { font-size: 15px; letter-spacing: 6px; color: #8fb2c9; margin-top: 12px; opacity: 0; }
#flLogo.go .fl-logo-sub { animation: flSubIn .6s ease 1.25s both; }
#flLogo.go .fl-logo-cn { animation: flSubIn .6s ease 1.5s both; }
@keyframes flSubIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.fl-logo-line {
  width: 0; height: 2px; margin: 20px auto 0;
  background: linear-gradient(90deg, transparent, var(--fl-acc), transparent);
}
#flLogo.go .fl-logo-line { animation: flLine .9s ease 1.3s both; }
@keyframes flLine { from { width: 0; } to { width: 340px; } }

/* ── 打字简报 ── */
#flGuide { align-items: center; justify-content: center; }
.fl-guide { width: min(880px, 92vw); position: relative; cursor: pointer; }
.fl-gd-head { display: flex; align-items: baseline; gap: 16px; border-left: 5px solid var(--fl-acc); padding-left: 16px; }
.fl-gd-head b {
  font-family: Consolas, monospace; font-size: 17px; color: var(--fl-acc2);
  letter-spacing: 3px; transform: skewX(-8deg); display: inline-block;
}
.fl-gd-head span { font-size: 12.5px; color: #5d7d95; letter-spacing: 2px; }
.fl-gd-txt {
  min-height: 150px; margin-top: 26px; font-size: 30px; font-weight: 700;
  line-height: 1.65; color: var(--fl-ink); letter-spacing: 2px;
  text-shadow: 0 2px 14px rgba(0,0,0,.6);
}
/* 翻页时整行斜切滑入 */
.fl-gd-txt.swap { animation: flSlideIn .42s cubic-bezier(.2,.8,.3,1) backwards; }
@keyframes flSlideIn { from { opacity: 0; transform: translateX(-38px) skewX(-6deg); } to { opacity: 1; transform: none; } }
.fl-gd-head b.swap { animation: flEnIn .5s cubic-bezier(.2,.8,.3,1) backwards; }
@keyframes flEnIn { from { opacity: 0; letter-spacing: 16px; transform: skewX(-8deg) translateX(-18px); } to { opacity: 1; letter-spacing: 3px; } }
.fl-gd-txt em { font-style: normal; color: var(--fl-acc); }
#flGdCur { font-style: normal; color: var(--fl-acc); animation: flCur .8s steps(2) infinite; }
@keyframes flCur { 0%,100% { opacity: 1; } 50% { opacity: 0; } }
.fl-gd-next { margin-top: 18px; font-size: 13px; color: #5d7d95; letter-spacing: 3px; animation: flCur 1.6s ease infinite; }
.fl-gd-dots { margin-top: 14px; display: flex; gap: 8px; }
.fl-gd-dots i {
  width: 30px; height: 5px; background: #1c2c3c; transform: skewX(-24deg);
  transition: background .3s;
}
.fl-gd-dots i.on { background: var(--fl-acc); box-shadow: 0 0 10px rgba(34,211,238,.6); }
.fl-skip {
  position: absolute; right: 0; top: -64px; cursor: pointer;
  background: transparent; border: 1px solid #2c4256; color: #7fa0b8;
  font-family: Consolas, monospace; font-size: 12.5px; letter-spacing: 3px;
  padding: 8px 18px; transform: skewX(-12deg); transition: all .2s;
}
.fl-skip:hover { border-color: var(--fl-acc); color: var(--fl-acc); }

/* ── 车库 ── */
#flGarage { flex-direction: column; padding: 4vh 4vw 3vh; }
.fl-gr-head { display: flex; align-items: baseline; gap: 20px; }
.fl-gr-title {
  font-size: 46px; font-weight: 900; font-style: italic; letter-spacing: 4px;
  color: #fff; transform: skewX(-8deg);
  text-shadow: 0 0 24px rgba(34,211,238,.5);
}
.fl-gr-title b { font-size: 16px; font-style: normal; color: var(--fl-acc); letter-spacing: 5px; margin-left: 14px; }
.fl-gr-sub { font-family: Consolas, monospace; font-size: 11.5px; color: #4d6b82; letter-spacing: 4px; }
.fl-gr-wrap { flex: 1; display: flex; gap: 30px; min-height: 0; margin-top: 2.6vh; }

/* 车卡列表：内层 margin:auto 垂直居中——内容超高时自动顶到起点，首行永不裁剪 */
.fl-gr-list {
  flex: 1.5; display: flex; flex-direction: column;
  overflow-x: hidden; overflow-y: auto; padding: 6px 2px;
  scrollbar-width: thin; scrollbar-color: #2e3d51 transparent;
}
.fl-gr-inner {
  display: flex; flex-wrap: wrap; gap: 16px; align-content: center;
  justify-content: center; margin: auto 0; width: 100%; min-height: 0;
}
/* 入场瀑布：每张卡按 --d 依次上浮（backwards 保证入场后 hover 正常） */
.fl-car {
  position: relative; cursor: pointer; width: calc(50% - 8px); min-width: 230px;
  background: linear-gradient(160deg, rgba(16,30,44,.92), rgba(9,16,25,.94));
  border: 1px solid #22384c; transform: skewX(-4deg);
  clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 16px 100%, 0 calc(100% - 16px));
  padding: 12px 14px 10px; transition: transform .2s, border-color .2s, box-shadow .2s;
  animation: flCardIn .55s cubic-bezier(.2,.8,.3,1) backwards;
  animation-delay: calc(var(--d, 0) * 65ms);
}
.fl-gr-list.no-anim .fl-car, .fl-gr-inner.no-anim .fl-car { animation: none; }
@keyframes flCardIn { from { opacity: 0; transform: skewX(-4deg) translateY(30px) scale(.96); } to { opacity: 1; transform: skewX(-4deg); } }
.fl-car:hover { transform: skewX(-4deg) translateY(-3px); border-color: #2f5876; }
.fl-car.sel {
  border-color: var(--fl-acc);
  box-shadow: 0 0 24px rgba(34,211,238,.28), inset 0 0 30px rgba(34,211,238,.06);
  background: linear-gradient(160deg, rgba(14,42,58,.95), rgba(9,18,28,.96));
}
/* 选中卡：高光扫描线循环掠过 */
.fl-car.sel::after {
  content: ''; position: absolute; left: -45%; top: 0; bottom: 0; width: 36%;
  background: linear-gradient(100deg, transparent, rgba(34,211,238,.16), transparent);
  transform: skewX(-10deg); animation: flScan 2.1s ease-in-out infinite;
  pointer-events: none;
}
@keyframes flScan { 0% { left: -45%; } 62%, 100% { left: 125%; } }
.fl-car-in { transform: skewX(4deg); }
.fl-car canvas { width: 100%; height: 78px; object-fit: contain; display: block; filter: drop-shadow(0 8px 12px rgba(0,0,0,.5)); }
.fl-car.sel canvas { filter: drop-shadow(0 8px 14px rgba(0,0,0,.55)) drop-shadow(0 0 16px rgba(34,211,238,.25)); }
.fl-car-nm { display: flex; align-items: baseline; justify-content: space-between; margin-top: 8px; }
.fl-car-nm b { font-size: 15.5px; color: var(--fl-ink); letter-spacing: 1px; }
.fl-car-nm span { font-family: Consolas, monospace; font-size: 11px; color: #5d7d95; }
.fl-car-cd { position: absolute; top: 8px; right: 22px; font-family: Consolas, monospace; font-size: 11px; color: var(--fl-acc2); letter-spacing: 1px; transform: skewX(4deg); }
.fl-car.locked { opacity: .35; pointer-events: none; }

/* 空风洞卡 */
.fl-car.base .fl-car-nm b { color: var(--fl-acc2); }

/* 右侧档案（每次选择滑入刷新） */
.fl-gr-info {
  flex: 1; min-width: 300px; max-width: 430px; align-self: center;
  background: linear-gradient(200deg, rgba(13,26,40,.94), rgba(8,14,22,.96));
  border: 1px solid #22384c; border-left: 4px solid var(--fl-acc);
  clip-path: polygon(0 0, calc(100% - 18px) 0, 100% 18px, 100% 100%, 0 100%);
  padding: 22px 24px;
}
.fl-gr-info.in { animation: flInfoIn .45s cubic-bezier(.2,.8,.3,1) backwards; }
@keyframes flInfoIn { from { opacity: 0; transform: translateX(46px); } to { opacity: 1; transform: none; } }
.fl-gr-tag { font-family: Consolas, monospace; font-size: 11px; color: var(--fl-acc2); letter-spacing: 4px; }
.fl-gr-name { font-size: 30px; font-weight: 900; font-style: italic; color: #fff; letter-spacing: 1px; margin-top: 6px; transform: skewX(-6deg); }
.fl-gr-en { font-family: Consolas, monospace; font-size: 12px; color: #6fa3bd; letter-spacing: 3px; margin-top: 3px; }
.fl-gr-desc { font-size: 13.5px; line-height: 1.75; color: #a9c2d4; margin-top: 13px; min-height: 66px; }
.fl-gr-bars { margin-top: 14px; }
.fl-bar-row { display: flex; align-items: center; gap: 10px; margin: 8px 0; }
.fl-bar-row label { width: 92px; font-size: 12px; color: #7d99ae; letter-spacing: 2px; text-align: right; }
.fl-bar { flex: 1; display: flex; gap: 3px; transform: skewX(-18deg); }
.fl-bar i { flex: 1; height: 11px; background: #16222e; transition: background .25s; }
.fl-bar i.on {
  background: linear-gradient(90deg, #0ea5c4, var(--fl-acc));
  box-shadow: 0 0 8px rgba(34,211,238,.5);
  animation: flCell .24s cubic-bezier(.2,.8,.3,1) backwards;
  animation-delay: calc(var(--c, 0) * 42ms);
}
.fl-bar i.on.hot {
  background: linear-gradient(90deg, #d98b12, var(--fl-acc2));
  box-shadow: 0 0 8px rgba(255,176,32,.5);
}
@keyframes flCell { from { opacity: 0; transform: scaleY(.15); } to { opacity: 1; transform: none; } }
.fl-gr-nums { display: flex; gap: 12px; margin-top: 16px; }
.fl-num { flex: 1; background: rgba(10,20,30,.8); border: 1px solid #1e3448; padding: 9px 6px; text-align: center; transform: skewX(-8deg); }
.fl-num b {
  display: block; font-family: Consolas, monospace; font-size: 19px; color: var(--fl-acc);
  animation: flNumPop .5s cubic-bezier(.2,.8,.3,1.35) backwards .1s;
}
@keyframes flNumPop { from { opacity: 0; transform: translateY(10px) scale(.7); } to { opacity: 1; transform: none; } }
.fl-num span { font-size: 10.5px; color: #5d7d95; letter-spacing: 1px; }
.fl-gr-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 2.4vh; gap: 18px; }
.fl-gr-hint { font-size: 12.5px; color: #4d6b82; letter-spacing: 2px; }

/* ── 加载页 ── */
#flLoading { align-items: center; justify-content: center; }
.fl-ld { width: min(640px, 88vw); }
.fl-ld-t { display: flex; align-items: baseline; gap: 16px; margin-bottom: 20px; }
.fl-ld-t b {
  font-family: Consolas, monospace; font-size: 26px; font-weight: 900; font-style: italic;
  color: var(--fl-acc); letter-spacing: 3px; transform: skewX(-8deg); display: inline-block;
  text-shadow: 0 0 18px rgba(34,211,238,.5);
}
.fl-ld-t { font-size: 19px; font-weight: 700; color: var(--fl-ink); letter-spacing: 5px; }
.fl-ld-bar {
  height: 16px; background: #0d1824; border: 1px solid #22384c;
  transform: skewX(-18deg); overflow: hidden; position: relative;
}
.fl-ld-bar i {
  display: block; height: 100%; width: 0%; position: relative;
  background: repeating-linear-gradient(115deg, #0ea5c4 0 14px, #22d3ee 14px 26px);
  background-size: 52px 100%;
  box-shadow: 0 0 18px rgba(34,211,238,.65);
  transition: width .12s linear;
  animation: flStripe .45s linear infinite;
}
@keyframes flStripe { from { background-position-x: 0; } to { background-position-x: 52px; } }
/* 进度条尖端高亮拖块 */
.fl-ld-bar i::after {
  content: ''; position: absolute; right: 0; top: -2px; bottom: -2px; width: 7px;
  background: #e6fcff; box-shadow: 0 0 18px #7defff, 0 0 34px rgba(34,211,238,.8);
}
.fl-ld-row { display: flex; justify-content: space-between; margin-top: 10px; font-family: Consolas, monospace; }
.fl-ld-row span:first-child { font-size: 22px; font-weight: 700; color: var(--fl-ink); }
.fl-ld-row span:last-child { font-size: 12px; color: var(--fl-acc2); letter-spacing: 3px; }
.fl-ld-row span.go { animation: flCur .45s steps(2) infinite; color: #52ff9a; }
.fl-ld-tip {
  margin-top: 30px; font-size: 14.5px; color: #9db8ca; letter-spacing: 1.5px;
  border-left: 3px solid var(--fl-acc2); padding-left: 12px; min-height: 44px; line-height: 1.7;
}
.fl-ld-tip.tip-in { animation: flTipIn .38s cubic-bezier(.2,.8,.3,1) backwards; }
@keyframes flTipIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }

/* ── 窄屏适配：列表顶部对齐（任何内容高度都不裁顶），档案折叠到选中卡下方 ── */
@media (max-width: 860px) {
  .fl-gr-wrap { flex-direction: column; overflow: hidden; }
  .fl-gr-list { flex: 1 1 auto; min-height: 0; overflow-x: hidden; overflow-y: auto; }
  .fl-gr-inner { margin: 0; align-content: flex-start; justify-content: flex-start; padding-bottom: 18px; }
  .fl-gr-info { display: none; }
  .fl-car { width: calc(50% - 8px); min-width: 160px; }
  .fl-gr-title { font-size: 30px; }
  .fl-gd-txt { font-size: 20px; min-height: 120px; }
  .fl-logo { font-size: 62px; }
}
/* 竖屏手机：单列大卡，图片比例稳定 */
@media (max-width: 560px) {
  .fl-car { width: 100%; }
  .fl-car canvas { height: 96px; }
  .fl-gr-name { font-size: 24px; }
  .fl-cta span { font-size: 19px; white-space: nowrap; }
  .fl-gr-foot { flex-direction: column; align-items: stretch; gap: 12px; }
  .fl-gr-hint { text-align: center; }
  .fl-cta.sm { width: 100%; }
}
/* ── 矮屏（笔记本小窗 / 横屏手机）紧凑化：卡片三行放得下，首行不裁剪 ── */
@media (max-height: 760px) and (orientation: landscape) {
  #flGarage { padding: 2.5vh 4vw 2vh; }
  .fl-gr-title { font-size: 32px; }
  .fl-gr-info { padding: 14px 18px; }
  .fl-gr-name { font-size: 24px; }
  .fl-gr-desc { font-size: 12.5px; line-height: 1.6; min-height: 0; margin-top: 8px; }
  .fl-gr-bars { margin-top: 8px; }
  .fl-bar-row { margin: 5px 0; }
  .fl-gr-nums { margin-top: 10px; }
  .fl-car { padding: 8px 12px 7px; }
  .fl-car canvas { height: 56px; }
  .fl-gd-txt { font-size: 24px; min-height: 110px; }
  .fl-logo { font-size: 72px; }
}
@media (max-height: 560px) {
  .fl-car canvas { height: 46px; }
  .fl-bar i { height: 8px; }
  .fl-num { padding: 5px 4px; }
  .fl-num b { font-size: 15px; }
  .fl-gd-txt { font-size: 19px; min-height: 84px; }
  .fl-logo { font-size: 54px; }
  .fl-ld-tip { margin-top: 16px; min-height: 30px; }
}

/* ═══ 英雄选车台（横竖屏统一）：一次一辆，进一辆出一辆 ═══ */
.fl-gr-inner.fl-hero { display: block; position: relative; }
.fl-gr-inner.fl-hero .fl-car { display: none; width: 100%; min-width: 0; margin: 0 0 12px; padding: 20px 18px 16px; }
.fl-gr-inner.fl-hero .fl-car.hero { display: block; }
.fl-gr-inner.fl-hero .fl-car canvas { width: 100%; height: auto; max-height: 30vh; object-fit: contain; }
.fl-gr-inner.fl-hero .fl-car-nm b { font-size: 21px; }
.fl-hero-stage { position: absolute; inset: 0; pointer-events: none; }
.fl-hero-arrow {
  position: absolute; top: 50%; z-index: 6; cursor: pointer; pointer-events: auto;
  transform: translateY(-50%) skewX(-10deg);
  width: 54px; height: 74px; font-size: 30px; line-height: 1; color: #cfe4f2;
  background: rgba(16, 28, 42, .88); border: 1px solid #2c4a63; border-radius: 6px;
  transition: border-color .15s, color .15s;
}
.fl-hero-arrow:hover { border-color: var(--fl-acc); color: var(--fl-acc); }
.fl-hero-arrow-l { left: 10px; }
.fl-hero-arrow-r { right: 10px; }
.fl-hero-dots { display: flex; justify-content: center; gap: 12px; padding: 12px 0 2px; }
.fl-hero-dots i { width: 11px; height: 11px; border-radius: 50%; background: #24425a; cursor: pointer; transition: all .2s; }
.fl-hero-dots i.on { background: var(--fl-acc); box-shadow: 0 0 9px rgba(34,211,238,.65); transform: scale(1.2); }
/* 进一辆出一辆动画 */
.fl-car.in-r { animation: flHeroInR .3s cubic-bezier(.2,.9,.3,1.15) both; }
.fl-car.in-l { animation: flHeroInL .3s cubic-bezier(.2,.9,.3,1.15) both; }
.fl-car.out-l { animation: flHeroOutL .2s ease both; }
.fl-car.out-r { animation: flHeroOutR .2s ease both; }
@keyframes flHeroInR { from { opacity: 0; transform: skewX(-4deg) translateX(90px); } to { opacity: 1; transform: skewX(-4deg); } }
@keyframes flHeroInL { from { opacity: 0; transform: skewX(-4deg) translateX(-90px); } to { opacity: 1; transform: skewX(-4deg); } }
@keyframes flHeroOutL { to { opacity: 0; transform: skewX(-4deg) translateX(-90px); } }
@keyframes flHeroOutR { to { opacity: 0; transform: skewX(-4deg) translateX(90px); } }

/* 英雄模式布局覆盖：竖屏/窄屏也保持「车台 + 档案」结构，档案不再隐藏 */
@media (max-width: 860px) {
  .fl-gr-wrap { flex-direction: column; gap: 14px; }
  .fl-gr-list { flex: 1 1 auto; min-height: 0; }
  .fl-gr-inner { margin: 0; }
  .fl-gr-info { display: block; min-width: 0; max-width: none; align-self: stretch; }
  .fl-gr-title { font-size: 30px; }
}
@media (max-width: 560px) {
  .fl-gr-inner.fl-hero .fl-car canvas { max-height: 26vh; }
  .fl-gr-inner.fl-hero .fl-car-nm b { font-size: 19px; }
}


/* ── 英雄车台升级：大圆台 + 旧车滑出（与车库 / 试车场统一） ── */
.fl-gr-inner.fl-hero .fl-car.hero { position: relative; z-index: 1;
  background: rgba(10, 20, 32, .42); border-color: rgba(34, 211, 238, .25); }
.fl-gr-inner.fl-hero .hero-ring { z-index: 0; }

/* ── 风洞小知识条目（空风洞基准位面板） ── */
.fl-fact { display: flex; gap: 8px; align-items: flex-start;
  font-size: 12.5px; line-height: 1.7; color: #9dbccb; margin: 7px 0; }
.fl-fact i { flex: none; font-style: normal; color: var(--fl-acc); }
.fl-fact b { color: #e2f4ff; font-weight: 700; }
