/* ==========================================================================
   disc.css — 开屏工业数据光盘 / 唱机
   ========================================================================== */

.disc-intro{
  position:fixed;inset:0;z-index:5600;
  display:flex;align-items:center;justify-content:center;
  background:
    radial-gradient(ellipse at 50% 42%,rgba(255,255,255,.16),transparent 52%),
    linear-gradient(180deg,#9a9a94 0%,#6e6e68 42%,#2c2c2a 100%);
  cursor:grab;
  overflow:hidden;
}
.disc-intro.is-dragging{cursor:grabbing;}
.disc-intro.is-out{display:none;}

.disc-grain,.disc-vignette{
  position:absolute;inset:0;pointer-events:none;
}
.disc-grain{
  opacity:.28;mix-blend-mode:multiply;
  background-image:
    radial-gradient(rgba(0,0,0,.18) .7px,transparent .7px),
    repeating-linear-gradient(0deg,rgba(0,0,0,.05) 0 1px,transparent 1px 3px);
  background-size:3px 3px,100% 3px;
}
.disc-vignette{box-shadow:inset 0 0 160px rgba(0,0,0,.45),inset 0 0 40px rgba(0,0,0,.25);}

.disc-stage{
  position:relative;z-index:2;
  display:flex;flex-direction:column;align-items:center;
  gap:14px;padding:12px 20px 20px;
}

.disc-mast{text-align:center;}
.disc-brand{
  font-family:var(--font-logo);font-size:2.4rem;font-weight:900;
  letter-spacing:-.04em;line-height:.85;color:#111;
  text-shadow:0 1px 0 rgba(255,255,255,.35);
}
.disc-serial{
  margin-top:6px;
  font-family:var(--font-code);font-size:.52rem;letter-spacing:.18em;color:#2a2a26;
}

.disc-readout{
  min-width:280px;text-align:center;
  background:rgba(16,16,14,.9);color:#f3f2ea;
  border:1px solid #c9182b;
  box-shadow:0 8px 22px rgba(0,0,0,.35),inset 0 0 0 1px rgba(255,255,255,.06);
  padding:7px 16px 8px;
}
.disc-readout-k{
  font-family:var(--font-code);font-size:.46rem;letter-spacing:.2em;color:#9a9890;
}
.disc-readout-v{
  font-family:var(--font-screen);font-size:1.7rem;letter-spacing:.08em;color:#6cf39a;
  line-height:1.1;margin-top:1px;
}
.disc-readout-s{
  font-family:var(--font-code);font-size:.5rem;letter-spacing:.12em;color:#c8c6b8;
}

.disc-deck{
  position:relative;
  width:min(72vmin,560px);height:min(72vmin,560px);
  touch-action:none;
}
.disc-plinth{
  position:absolute;inset:-18px;
  border-radius:6px;
  background:
    linear-gradient(160deg,#e8e6de,#8d8d87 46%,#3a3a38);
  border:1px solid #1c1c1a;
  box-shadow:0 22px 48px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.45);
  pointer-events:none;
}
.disc-plinth::after{
  content:"";position:absolute;inset:10px;
  border:1px dashed rgba(0,0,0,.22);
}

.disc-platter{
  position:absolute;inset:8%;
  border-radius:50%;
  transform-origin:50% 50%;
  will-change:transform;
  background:
    repeating-radial-gradient(circle at 50% 50%,
      rgba(0,0,0,.1) 0 1px,transparent 1px 8px),
    conic-gradient(from -90deg,
      #e8dfc6 0 120deg,
      #c9d2c8 120deg 240deg,
      #d7c4b0 240deg 360deg);
  box-shadow:
    0 0 0 7px #2a2a28,
    0 0 0 9px #b8b6ae,
    0 18px 40px rgba(0,0,0,.5),
    inset 0 0 40px rgba(0,0,0,.18);
  transition:transform .18s linear;
}
.disc-intro.is-snapped .disc-platter,
.disc-intro.is-locked .disc-platter{
  transition:transform .42s cubic-bezier(.22,1.4,.36,1);
}
.disc-intro.is-dragging .disc-platter{transition:none;}

.disc-grooves{
  position:absolute;inset:6%;border-radius:50%;pointer-events:none;
  background:repeating-radial-gradient(circle at 50% 50%,
    rgba(0,0,0,.16) 0 1px,transparent 1px 5px);
  opacity:.55;
}

.disc-sectors{position:absolute;inset:0;border-radius:50%;pointer-events:none;}
.disc-sector{
  position:absolute;left:50%;top:50%;
  transform:rotate(var(--a)) translateY(calc(-1 * min(22vmin,172px))) rotate(calc(-1 * var(--a))) translate(-50%,-50%);
  transform-origin:0 0;
  font-family:var(--font-code);font-size:.58rem;font-weight:700;
  letter-spacing:.1em;color:#1a1a16;
  background:rgba(244,243,237,.78);
  border:1px solid rgba(0,0,0,.3);
  padding:4px 8px;white-space:nowrap;cursor:pointer;
  pointer-events:auto;z-index:4;
}
.disc-sector.is-hot{
  background:#c9182b;color:#fff;border-color:#fff;
  box-shadow:0 0 0 1px #c9182b;
}

.disc-ring{
  position:absolute;inset:27%;border-radius:50%;pointer-events:none;
  border:1px dashed rgba(0,0,0,.28);
}
.disc-split{
  position:absolute;left:50%;top:8%;width:1px;height:42%;
  background:repeating-linear-gradient(180deg,#1a1a16 0 3px,transparent 3px 6px);
  transform-origin:50% 100%;
  transform:translateX(-50%) rotate(var(--s));
  pointer-events:none;opacity:.5;
}
.disc-hub{
  position:absolute;left:50%;top:50%;width:92px;height:92px;
  margin:-46px 0 0 -46px;border-radius:50%;
  background:
    radial-gradient(circle at 34% 30%,#fff,#8a8a86 46%,#1c1c1a 70%,#111);
  border:2px solid #111;
  box-shadow:0 6px 16px rgba(0,0,0,.45);
  display:flex;align-items:center;justify-content:center;
  pointer-events:none;
}
.disc-hub i{
  position:absolute;width:9px;height:9px;border-radius:50%;
  background:#0d0d0c;box-shadow:inset 0 1px 2px rgba(255,255,255,.25);
}
.disc-hub i:nth-child(1){transform:translate(-18px,-8px);}
.disc-hub i:nth-child(2){transform:translate(18px,-8px);}
.disc-hub i:nth-child(3){transform:translate(0,18px);}
.disc-hub b{
  font-family:var(--font-code);font-size:.42rem;letter-spacing:.16em;color:#f2f2ee;
}

/* 唱针：固定在盘面右上，不随盘转 */
.disc-stylus{
  position:absolute;right:2%;top:4%;width:46%;height:62%;
  pointer-events:none;z-index:5;
  transform-origin:88% 14%;
}
.stylus-base{
  position:absolute;right:0;top:0;width:54px;height:54px;
  background:linear-gradient(145deg,#f2f2ee,#6c6c68);
  border:1px solid #111;
  box-shadow:0 8px 16px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.5);
}
.stylus-pivot{
  position:absolute;right:14px;top:14px;width:26px;height:26px;border-radius:50%;
  background:radial-gradient(circle at 34% 30%,#fff,#5a5a56 60%,#141414);
  border:1px solid #111;
}
.stylus-arm{
  position:absolute;right:24px;top:24px;width:10px;height:82%;
  background:linear-gradient(90deg,#f6f6f2,#8d8d89 40%,#2c2c2a);
  border:1px solid #111;
  transform-origin:50% 0;
  transform:rotate(32deg);
  box-shadow:2px 6px 10px rgba(0,0,0,.35);
}
.stylus-counter{
  position:absolute;right:6px;top:44px;width:28px;height:18px;
  background:linear-gradient(180deg,#3a3a36,#111);
  border:1px solid #000;
}
.stylus-head{
  position:absolute;left:4%;bottom:18%;width:22px;height:14px;
  background:#111;border:1px solid #c9182b;
  transform:rotate(28deg);
  box-shadow:0 0 10px rgba(201,24,43,.55);
}
.disc-needle-dot{
  position:absolute;left:50%;top:8%;width:10px;height:10px;margin-left:-5px;
  border-radius:50%;background:#c9182b;
  box-shadow:0 0 0 3px rgba(201,24,43,.25),0 0 12px #c9182b;
  z-index:6;pointer-events:none;
}
.disc-intro.is-snapped .disc-needle-dot,
.disc-intro.is-locked .disc-needle-dot{
  background:#6cf39a;box-shadow:0 0 0 3px rgba(108,243,154,.28),0 0 14px #6cf39a;
}

.disc-hint{
  font-family:var(--font-code);font-size:.5rem;letter-spacing:.12em;color:#222;
  background:rgba(244,243,237,.7);padding:3px 10px;border:1px dashed #3a3a36;
}

.disc-actions{display:flex;gap:8px;}
.disc-btn{
  font-family:var(--font-mono);font-size:.68rem;font-weight:700;
  padding:7px 12px;cursor:pointer;
  background:var(--metal-face,#ecece7);color:#111;
  border-top:2px solid #fff;border-left:2px solid #fff;
  border-right:2px solid #565653;border-bottom:2px solid #565653;
  box-shadow:2px 2px 0 rgba(0,0,0,.28);
}
.disc-btn-go{background:#141414;color:#fff;border-top-color:#666;border-left-color:#666;}
.disc-btn:hover{filter:brightness(1.08);}

.disc-intro.is-commit .disc-deck,
.disc-intro.is-skip .disc-deck,
.disc-intro.is-commit,
.disc-intro.is-skip{
  animation:none;
}

body.intro-active .spatial-stage,
body.intro-active header,
body.intro-active .telemetry-box,
body.intro-active .layout-dock,
body.intro-active .bg-dock,
body.intro-active .node-dock,
body.intro-active .console-grip{
  pointer-events:none;
}
body.intro-active .tether-rig,
body.intro-active .assemblage-field{
  visibility:hidden !important;
  opacity:1 !important;
}

body.theme-dark .disc-intro{
  background:
    radial-gradient(ellipse at 50% 42%,rgba(90,110,150,.16),transparent 52%),
    linear-gradient(180deg,#1a1b20 0%,#0c0d10 100%);
}
body.theme-dark .disc-brand{color:#f4f3ed;text-shadow:none;}
body.theme-dark .disc-serial,
body.theme-dark .disc-hint{color:#c8c6b8;}
body.theme-dark .disc-hint{background:rgba(20,20,22,.7);border-color:#555;}
