/* ==========================================================================
   model.css — 粒子渲染舞台 / 注解 / 模型操作台
   ========================================================================== */

#stage{
  position:fixed;
  inset:0;
  width:100%;
  height:100%;
  z-index:0;
  display:block;
  cursor:pointer;   /* 仅支持点击选取分区，不支持拖拽旋转 */
  /* 高度由脚本同步视口，避免移动端动态视口下的抖动 */
  transition:opacity .6s var(--e-out);
}
/* 越过首屏后把模型降为背景层，保证正文可读性 */
body.is-scrolled #stage{opacity:.30}

/* 暗角 */
.stage-vignette{
  position:fixed;inset:0;z-index:1;pointer-events:none;
  background:
    radial-gradient(120% 90% at 50% 45%, transparent 42%, rgba(13,13,13,.55) 78%, rgba(13,13,13,.92) 100%);
}

/* 扫描线 */
.stage-scanlines{
  position:fixed;inset:0;z-index:2;pointer-events:none;
  opacity:.5;
  background-image:repeating-linear-gradient(
    0deg,
    rgba(255,250,0,.045) 0px,
    rgba(255,250,0,.045) 1px,
    transparent 1px,
    transparent 3px
  );
  mix-blend-mode:screen;
  animation:scanDrift 12s linear infinite;
}
@keyframes scanDrift{to{background-position:0 60px}}

/* 模型切换时的过曝闪白 */
.stage-flash{
  position:fixed;inset:0;z-index:3;pointer-events:none;
  background:rgba(255,255,255,.22);
  opacity:0;
}
.stage-flash.is-on{animation:flashOut .5s var(--e-out) 1}
@keyframes flashOut{0%{opacity:1}100%{opacity:0}}

/* ---------- 分区列表（与模型高亮联动） ---------- */
.parts{display:grid;gap:8px;align-content:start}
.part{
  position:relative;
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:16px;
  padding:15px 18px;
  text-align:left;
  background:linear-gradient(90deg,rgba(19,19,21,.92),rgba(19,19,21,.94));
  border:1px solid var(--ln-1);
  border-left-width:2px;
  cursor:pointer;
  width:100%;
  transition:all .3s var(--e-out);
}
.part:hover{
  border-color:var(--ln-0);
  border-left-color:var(--c,var(--yl-1));
  background:linear-gradient(90deg,rgba(40,40,40,.97),rgba(19,19,21,.96));
  transform:translateX(4px);
}
.part__k{
  font-family:var(--f-mono);font-size:10px;letter-spacing:.2em;color:var(--tx-3);
  min-width:56px;
}
.part__n{
  font-family:var(--f-head);font-size:15.5px;font-weight:600;color:var(--tx-0);
  letter-spacing:.08em;
  display:block;
  margin-bottom:3px;
}
.part__d{font-size:12.5px;color:var(--tx-2);line-height:1.7;display:block}
