/* Densha QTE UI — from densha-gameplay-ui (新建 Bot), scoped for canvas playtest */
#pt-qte-host {
  position: absolute; inset: 0; z-index: 5;
  pointer-events: auto;
  font-family: "PingFang SC", "Noto Sans SC", system-ui, sans-serif;
  color: #f5e6d0;
  --mono: ui-monospace, SFMono-Regular, Menlo, monospace;
}
#pt-qte-host.hidden { display: none !important; }
#pt-qte-host .qte-root { position: absolute; inset: 0; }
#pt-qte-host {
  --bg-deep: #0c0a08;
  --bg: #14110e;
  --bg-elevated: #1c1814;
  --bg-panel: #221e19;
  --border: rgba(212, 175, 100, 0.18);
  --border-strong: rgba(212, 175, 100, 0.35);
  --gold: #d4af64;
  --gold-bright: #f0d78c;
  --gold-dim: #9a7b3c;
  --text: #f2ebe0;
  --text-muted: #a89a88;
  --danger: #e07a6a;
  --ok: #7ec99a;
  --accent: #e8a0b0;
  --shadow: 0 18px 50px rgba(0, 0, 0, 0.45);
  --radius: 14px;
  --font: "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --phone-w: 360px;
  --phone-h: 640px;
}

* { box-sizing: border-box; }

#pt-qte-host {
  margin: 0;
  min-height: 100%;
  background:
    radial-gradient(1200px 600px at 10% -10%, rgba(212, 175, 100, 0.08), transparent 55%),
    radial-gradient(900px 500px at 100% 0%, rgba(120, 70, 30, 0.12), transparent 50%),
    linear-gradient(180deg, var(--bg-deep), var(--bg));
  color: var(--text);
  font-family: var(--font);
}

#pt-qte-host { padding: 20px 16px 40px; }

.app { max-width: 1180px; margin: 0 auto; }

.topbar {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--border);
}

.brand h1 {
  margin: 0;
  font-size: 1.45rem;
  font-weight: 650;
  letter-spacing: 0.04em;
  color: var(--gold-bright);
}

.brand .sub { color: var(--text-muted); font-size: 0.82rem; margin-top: 4px; }

.badge {
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  color: var(--gold-dim);
  border: 1px solid var(--border);
  background: rgba(212, 175, 100, 0.06);
  padding: 6px 10px;
  border-radius: 999px;
}

.layout {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 20px;
  align-items: start;
}

@media (max-width: 900px) {
  .layout { grid-template-columns: 1fr; justify-items: center; }
  .side-col { width: 100%; max-width: 480px; }
}

.phone-col { display: flex; flex-direction: column; align-items: center; gap: 10px; }

.phone-frame {
  width: var(--phone-w);
  height: var(--phone-h);
  border-radius: 28px;
  border: 3px solid #3a3228;
  background: #000;
  box-shadow: var(--shadow), inset 0 0 0 1px rgba(255,255,255,0.06);
  position: relative;
  overflow: hidden;
}

.phone-notch {
  position: absolute;
  top: 8px; left: 50%; transform: translateX(-50%);
  width: 90px; height: 18px;
  background: #1a1510;
  border-radius: 12px;
  z-index: 40;
  pointer-events: none;
}

#pt-qte-host {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  touch-action: none;
  user-select: none;
  -webkit-user-select: none;
}

#pt-qte-host-bg {
  position: absolute; inset: 0;
  background-size: cover;
  background-position: center;
  background-color: #1a1218;
  transition: background-image 0.3s ease;
}

#pt-qte-host-tint {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.35) 0%, transparent 18%, transparent 70%, rgba(0,0,0,0.55) 100%);
  pointer-events: none;
}

.hud {
  position: absolute;
  top: 28px; left: 12px; right: 12px;
  z-index: 20;
  display: flex;
  flex-direction: column;
  gap: 6px;
  pointer-events: none;
}

.pleasure-wrap { width: 100%; }

.pleasure-label {
  font-size: 0.72rem;
  color: #f5e6d0;
  text-shadow: 0 1px 3px #000;
  margin-bottom: 3px;
}

.pleasure-bar {
  height: 8px;
  border-radius: 999px;
  background: rgba(0,0,0,0.45);
  border: 1px solid rgba(255,255,255,0.15);
  overflow: hidden;
}

.pleasure-fill {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, #c96b8a, #f0a0b8, #f5d0a0);
  transition: width 0.25s ease;
}

.scene-tag {
  align-self: flex-end;
  font-size: 0.65rem;
  letter-spacing: 0.06em;
  color: rgba(255,255,255,0.7);
  background: rgba(0,0,0,0.4);
  padding: 2px 8px;
  border-radius: 6px;
}

.tip-layer {
  position: absolute; inset: 0;
  z-index: 30;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.55);
  padding: 24px;
}

.tip-layer.hidden, .revive-panel.hidden, .clear-panel.hidden { display: none !important; }

.tip-card, .revive-card, .clear-card {
  background: rgba(28, 20, 24, 0.95);
  border: 1px solid var(--border-strong);
  border-radius: 16px;
  padding: 20px 18px;
  text-align: center;
  max-width: 280px;
  box-shadow: var(--shadow);
}

.tip-main {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--gold-bright);
  line-height: 1.35;
  margin-bottom: 8px;
}

.tip-sub {
  font-size: 0.82rem;
  color: var(--text-muted);
  margin-bottom: 14px;
  line-height: 1.4;
}

.btn-tip, .btn-primary, .btn-ghost, .btn-danger, .qte-btn {
  font: inherit;
  cursor: pointer;
  border-radius: 10px;
  border: 1px solid transparent;
  padding: 10px 14px;
  transition: transform 0.12s ease, background 0.15s ease, opacity 0.15s ease;
}

.btn-tip, .btn-primary {
  background: linear-gradient(135deg, #c9a24d, #8f6b28);
  color: #1a140c;
  font-weight: 650;
}

.btn-ghost {
  background: rgba(255,255,255,0.05);
  border-color: var(--border);
  color: var(--text);
}

.btn-danger {
  background: rgba(180, 50, 50, 0.35);
  border-color: rgba(224, 122, 106, 0.5);
  color: #ffc8c0;
}

button:disabled { opacity: 0.45; cursor: not-allowed; }

.qte {
  position: absolute; inset: 0;
  z-index: 15;
}

/* Title / stub panels */
.panel-center {
  position: absolute; inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 24px;
  text-align: center;
}

.panel-center .big-title {
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--gold-bright);
  text-shadow: 0 0 20px rgba(212,175,100,0.35);
}

.panel-center .sub-line { color: var(--text-muted); font-size: 0.9rem; line-height: 1.5; }

.stub-bg {
  position: absolute; inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 20px;
  background: linear-gradient(160deg, #2a1a28 0%, #3a2838 40%, #1a2230 100%);
}

.stub-bg.scene-board { background: linear-gradient(180deg, #3a4a5a, #1a2030); }
.stub-bg.scene-waist { background: linear-gradient(180deg, #4a3040, #2a1828); }
.stub-bg.scene-breast { background: linear-gradient(180deg, #5a3048, #2a1828); }
.stub-bg.scene-skirt { background: linear-gradient(180deg, #403050, #201828); }
.stub-bg.scene-bend { background: linear-gradient(180deg, #304050, #182028); }
.stub-bg.scene-station { background: linear-gradient(180deg, #354858, #1a2430); }
.stub-bg.scene-consent { background: linear-gradient(180deg, #483848, #241820); }
.stub-bg.scene-finger { background: linear-gradient(180deg, #503848, #281820); }
.stub-bg.scene-gate { background: linear-gradient(180deg, #403040, #201820); }
.stub-bg.scene-q4 { background: linear-gradient(180deg, #4a2838, #201018); }
.stub-bg.scene-pose { background: linear-gradient(180deg, #483040, #201820); }
.stub-bg.scene-q5 { background: linear-gradient(180deg, #502838, #180c14); }
.stub-bg.scene-clear { background: linear-gradient(180deg, #3a5040, #182820); }
.stub-bg.scene-fail { background: linear-gradient(180deg, #502020, #200808); }

.stub-caption {
  color: #f5e8d8;
  font-size: 0.85rem;
  line-height: 1.45;
  text-shadow: 0 1px 4px #000;
  background: rgba(0,0,0,0.4);
  padding: 10px 12px;
  border-radius: 10px;
}

/* SplitWaist */
.split-waist {
  position: absolute; inset: 0;
  display: grid;
  grid-template-rows: 1fr 1fr;
}

.split-face, .split-body {
  position: relative;
  border-bottom: 1px solid rgba(255,255,255,0.12);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.split-face { background: rgba(80, 40, 55, 0.55); }
.split-body { background: rgba(40, 30, 45, 0.55); border-bottom: none; }

.face-state {
  font-size: 1.1rem;
  font-weight: 700;
  padding: 8px 16px;
  border-radius: 999px;
  background: rgba(0,0,0,0.4);
}

.face-state.lookback { color: #ff9a8a; border: 1px solid #e07a6a; }
.face-state.forward-short { color: #f0d78c; border: 1px solid #9a7b3c; }
.face-state.forward-long { color: #7ec99a; border: 1px solid #5aaa7a; }

.face-timer { font-size: 0.75rem; color: rgba(255,255,255,0.7); font-family: var(--mono); }

.hold-ring-wrap {
  position: relative;
  width: 110px; height: 110px;
}

.hold-ring-svg {
  width: 110px; height: 110px;
  transform: rotate(-90deg);
}

.hold-ring-track {
  fill: none;
  stroke: rgba(255,255,255,0.2);
  stroke-width: 8;
}

.hold-ring-fill {
  fill: none;
  stroke: #f0d78c;
  stroke-width: 8;
  stroke-linecap: round;
  /* dasharray set inline by JS (CIRC=2*pi*45); CSS fallback aligned */
  stroke-dasharray: 282.743;
  stroke-dashoffset: 282.743;
  transition: stroke 0.1s linear, stroke-dashoffset 50ms linear;
}

.hold-ring-btn {
  position: absolute; inset: 18px;
  border-radius: 50%;
  border: none;
  background: radial-gradient(circle at 40% 35%, #e8c878, #8f6b28);
  color: #1a140c;
  font-weight: 700;
  font-size: 0.85rem;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(0,0,0,0.4);
  touch-action: none;
}

.hold-ring-btn:disabled { opacity: 0.4; }
.hold-ring-btn.active { background: radial-gradient(circle at 40% 35%, #ffe8a0, #c9a24d); }

.waist-meta {
  font-size: 0.78rem;
  color: #f5e6d0;
  text-shadow: 0 1px 3px #000;
}

/* Swipe */
.swipe-area {
  position: absolute; inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  background: rgba(0,0,0,0.25);
}

.countdown {
  font-size: 2.4rem;
  font-weight: 800;
  color: #ffb0a0;
  font-family: var(--mono);
  text-shadow: 0 0 20px rgba(224,122,106,0.5);
}

.swipe-hint {
  font-size: 1.1rem;
  color: #fff;
  display: flex;
  align-items: center;
  gap: 8px;
}

.swipe-arrows { font-size: 1.8rem; letter-spacing: -0.15em; color: #f0d78c; animation: pulse 0.8s ease infinite; }

@keyframes pulse {
  0%, 100% { opacity: 0.55; transform: translateX(0); }
  50% { opacity: 1; transform: translateX(-8px); }
}

.swipe-zone {
  width: 80%;
  height: 120px;
  border: 2px dashed rgba(240,215,140,0.45);
  border-radius: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
  font-size: 0.85rem;
  touch-action: none;
}

/* Station */
.station-ui {
  position: absolute; inset: 0;
  display: flex;
  flex-direction: column;
  pointer-events: none;
}

.station-timeline {
  margin-top: 70px;
  margin-left: 10px; margin-right: 10px;
  background: rgba(0,0,0,0.5);
  border-radius: 10px;
  padding: 8px 10px;
  pointer-events: none;
}

.station-phase {
  font-size: 0.78rem;
  color: #f0d78c;
  margin-bottom: 4px;
}

.station-progress {
  height: 6px;
  background: rgba(255,255,255,0.15);
  border-radius: 999px;
  overflow: hidden;
}

.station-progress > div {
  height: 100%;
  background: linear-gradient(90deg, #6a9, #c9a24d, #e07a6a);
  width: 0%;
}

.station-time {
  font-size: 0.7rem;
  color: rgba(255,255,255,0.65);
  font-family: var(--mono);
  margin-top: 4px;
}

.station-cue {
  position: absolute;
  top: 45%; left: 50%; transform: translate(-50%, -50%);
  background: rgba(0,0,0,0.65);
  color: #fff;
  padding: 10px 14px;
  border-radius: 10px;
  font-size: 0.95rem;
  font-weight: 600;
  white-space: nowrap;
}

.station-actions {
  position: absolute;
  bottom: 90px; left: 0; right: 0;
  display: flex;
  justify-content: center;
  gap: 12px;
  pointer-events: auto;
}

.pip-window {
  position: absolute;
  right: 12px; bottom: 12px;
  width: 88px; height: 88px;
  border-radius: 10px;
  border: 2px solid rgba(240,215,140,0.5);
  background: #2a2030;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.7rem;
  text-align: center;
  color: #f5e6d0;
  line-height: 1.3;
  pointer-events: none;
  box-shadow: 0 4px 16px rgba(0,0,0,0.4);
}

.pip-window.hand-in { background: linear-gradient(160deg, #5a3848, #2a1820); }
.pip-window.hand-out { background: linear-gradient(160deg, #384858, #182028); }

/* Choice binary */
.choice-stack {
  position: absolute; inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  padding: 24px 16px 40px;
  gap: 10px;
  background: linear-gradient(transparent 40%, rgba(0,0,0,0.65));
}

.choice-stack .line { color: #f5e6d0; font-size: 0.95rem; margin-bottom: 6px; text-align: center; }

.choice-stack button {
  width: 100%;
  max-width: 260px;
  padding: 12px;
  font-weight: 650;
}

/* Swipe down + mash */
.swipe-down-zone {
  position: absolute;
  left: 10%; right: 10%;
  top: 30%; bottom: 25%;
  border: 2px dashed rgba(240,215,140,0.4);
  border-radius: 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  color: #fff;
  touch-action: none;
}

.mash-zone {
  position: absolute;
  left: 50%; bottom: 80px;
  transform: translateX(-50%);
  width: 100px; height: 160px;
  border-radius: 50px;
  background: rgba(232, 160, 176, 0.28);
  border: 2px solid rgba(232, 160, 176, 0.65);
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(255,255,255,0.85);
  font-size: 0.75rem;
  text-align: center;
  touch-action: none;
  cursor: pointer;
}

.mash-bar-wrap {
  position: absolute;
  bottom: 40px; left: 16px; right: 16px;
}

.mash-bar {
  height: 10px;
  background: rgba(0,0,0,0.45);
  border-radius: 999px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,0.2);
}

.mash-bar > div {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, #e8a0b0, #f0d78c);
}

.mash-meta {
  text-align: center;
  font-size: 0.75rem;
  color: #f5e6d0;
  margin-top: 4px;
}

.charge-wrap {
  position: absolute;
  left: 50%; bottom: 100px;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

.charge-bar {
  width: 180px; height: 14px;
  background: rgba(0,0,0,0.5);
  border-radius: 999px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,0.2);
}

.charge-bar > div {
  height: 100%; width: 0%;
  background: linear-gradient(90deg, #c96b8a, #f0d78c);
}

.charge-btn {
  width: 120px; height: 120px;
  border-radius: 50%;
  border: 3px solid var(--gold);
  background: radial-gradient(circle at 40% 35%, rgba(232,160,176,0.5), rgba(80,40,50,0.8));
  color: #fff;
  font-weight: 700;
  cursor: pointer;
  touch-action: none;
}

.revive-panel, .clear-panel {
  position: absolute; inset: 0;
  z-index: 35;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.7);
  padding: 20px;
}

.revive-title, .clear-title {
  font-size: 1.4rem;
  font-weight: 800;
  color: var(--danger);
  margin-bottom: 8px;
}

.clear-title { color: var(--ok); font-size: 2rem; letter-spacing: 0.12em; }

.revive-msg, .clear-msg {
  color: var(--text-muted);
  font-size: 0.9rem;
  margin-bottom: 16px;
  line-height: 1.4;
}

.revive-actions { display: flex; flex-direction: column; gap: 8px; }

.phone-hint { font-size: 0.75rem; color: var(--text-muted); }

/* Side panel */
.side-col { display: flex; flex-direction: column; gap: 14px; min-width: 0; }

.panel {
  background: linear-gradient(165deg, var(--bg-panel), var(--bg-elevated));
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 16px;
}

.panel h2 {
  margin: 0 0 12px;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gold-dim);
}

label {
  display: block;
  margin: 0 0 6px;
  font-size: 0.8rem;
  color: var(--text-muted);
}

.field { margin-bottom: 12px; }

textarea, select, button { font: inherit; }

textarea, select {
  width: 100%;
  background: rgba(0,0,0,0.35);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 10px 11px;
  outline: none;
}

textarea { min-height: 120px; resize: vertical; line-height: 1.4; font-size: 0.82rem; }

textarea:focus, select:focus {
  border-color: var(--border-strong);
  box-shadow: 0 0 0 3px rgba(212, 175, 100, 0.12);
}

.row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }

.actions { display: flex; flex-wrap: wrap; gap: 8px; }

.status {
  min-height: 1.3em;
  margin-top: 10px;
  font-size: 0.85rem;
  color: var(--text-muted);
}
.status.busy { color: var(--gold); }
.status.err { color: var(--danger); }
.status.ok { color: var(--ok); }

.spinner {
  display: inline-block;
  width: 12px; height: 12px;
  border: 2px solid rgba(212, 175, 100, 0.25);
  border-top-color: var(--gold);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
  vertical-align: -1px;
  margin-right: 8px;
}

@keyframes spin { to { transform: rotate(360deg); } }

.preview-mini {
  margin-top: 12px;
  min-height: 140px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #0a0908;
  border: 1px dashed var(--border);
  border-radius: 10px;
  overflow: hidden;
}

.preview-mini img { max-width: 100%; max-height: 220px; object-fit: contain; display: block; }

.placeholder { color: var(--text-muted); font-size: 0.85rem; padding: 16px; }

.preview-meta {
  margin-top: 8px;
  font-size: 0.75rem;
  color: var(--text-muted);
  font-family: var(--mono);
}

.history-strip {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding-bottom: 4px;
}

.history-item {
  flex: 0 0 auto;
  width: 64px; height: 64px;
  border-radius: 8px;
  border: 2px solid transparent;
  overflow: hidden;
  cursor: pointer;
  background: #000;
  padding: 0;
}

.history-item.active { border-color: var(--gold); }
.history-item img { width: 100%; height: 100%; object-fit: cover; display: block; }

.debug-row { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }

.dbg-state {
  font-family: var(--mono);
  font-size: 0.72rem;
  color: var(--text-muted);
  line-height: 1.45;
  white-space: pre-wrap;
}

.footer-note {
  margin-top: 16px;
  text-align: center;
  color: var(--text-muted);
  font-size: 0.72rem;
  opacity: 0.8;
}


/* Dual video slots for SplitWaist */
.split-face, .split-body { overflow: hidden; }
.split-vid {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: 0;
  background: #1a1218;
}
.split-face .face-hud, .split-body .waist-hud {
  position: relative; z-index: 2;
  display: flex; flex-direction: column; align-items: center; gap: 8px;
}
.split-face .face-hud { margin-top: auto; margin-bottom: 10px; }
.split-body .waist-hud { margin-top: auto; margin-bottom: 16px; }
.split-miss-video {
  position: absolute; inset: 0; z-index: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; color: rgba(245,230,208,0.45); text-align: center; padding: 12px;
  background: repeating-linear-gradient(45deg,#2a1a22,#2a1a22 8px,#22141c 8px,#22141c 16px);
}


.yank-flash {
  position: absolute; top: 8px; left: 50%; transform: translateX(-50%);
  z-index: 5; padding: 6px 14px; border-radius: 999px;
  background: rgba(196, 92, 92, 0.88); color: #fff;
  font-size: 11px; font-weight: 700; letter-spacing: 0.08em;
  pointer-events: none;
  animation: yankPop 0.45s ease-out;
}
.yank-flash.hidden { display: none !important; }
@keyframes yankPop {
  from { opacity: 0; transform: translateX(-50%) scale(0.85); }
  to { opacity: 1; transform: translateX(-50%) scale(1); }
}
.hold-ring-btn.invalid {
  background: rgba(196, 92, 92, 0.35) !important;
  border-color: #c45c5c !important;
}
.hold-ring-fill.ring-invalid { stroke: #c45c5c !important; }


/* ===== Q1 上下 1×1 构图（参考交付分镜）===== */
.split-waist.layout-1x1 {
  position: absolute; inset: 0;
  display: flex; flex-direction: column;
  background: #000;
  overflow: hidden;
}
.sw-top {
  flex: 0 0 50%;
  display: flex; align-items: center; justify-content: center;
  background: #000; min-height: 0;
  position: relative;
  overflow: hidden;
}
.sw-bottom {
  flex: 0 0 50%;
  display: flex; flex-direction: row; align-items: stretch;
  background: #000; min-height: 0;
}
.sw-frame {
  position: relative;
  aspect-ratio: 1 / 1;
  height: 100%;
  max-width: 100%;
  background: #141014;
  overflow: hidden;
  flex: 0 0 auto;
}
.sw-face-frame {
  /* 上窗：高度吃满上半，宽度=高度 → 1×1 */
  height: 100%;
  width: auto;
  max-width: 100%;
}
.sw-waist-frame {
  /* 下窗：靠右 1×1 */
  margin-left: auto;
  height: 100%;
  width: auto;
}
.sw-controls {
  flex: 1 1 auto;
  min-width: 0;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 8px;
  padding: 8px 6px;
  background: #000;
  position: relative;
  z-index: 2;
}
.sw-controls.gameplay-hidden {
  opacity: 0.15;
  pointer-events: none;
}
.sw-hint {
  font-size: 10px; color: rgba(242,232,216,0.55);
  text-align: center; line-height: 1.3; max-width: 9em;
}
.sw-frame .split-vid {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; z-index: 0;
}
.sw-frame .split-miss-video {
  position: absolute; inset: 0; z-index: 1;
  display: flex; align-items: center; justify-content: center;
  text-align: center; padding: 10px; font-size: 11px;
  color: rgba(245,230,208,0.55);
  background: repeating-linear-gradient(45deg,#2a1a22,#2a1a22 8px,#22141c 8px,#22141c 16px);
}
.sw-frame .split-miss-video.hidden { display: none !important; }
.sw-face-frame .face-hud {
  position: absolute; left: 0; right: 0; bottom: 8px;
  z-index: 3; display: flex; flex-direction: column; align-items: center; gap: 4px;
  pointer-events: none;
}
/* pleasure3: never show floating +N · COMFORT/PLEASURE tags */
.pleasure-tag { display: none !important; }
.pleasure-tag {
  position: absolute; top: 10px; left: 50%; transform: translateX(-50%);
  z-index: 4; padding: 6px 12px; border-radius: 999px;
  background: rgba(126,201,154,0.9); color: #0c1a12;
  font-size: 12px; font-weight: 700; letter-spacing: 0.04em;
}
.pleasure-tag.hidden { display: none !important; }
.react-banner {
  position: absolute; left: 50%; bottom: 46%; transform: translateX(-50%);
  z-index: 6; padding: 6px 14px; border-radius: 999px;
  background: rgba(0,0,0,0.7); color: #f2e8d8;
  font-size: 11px; pointer-events: none;
}
.react-banner.hidden { display: none !important; }

/* phone taller feel for 1x1 stack */
#pt-qte-host .split-waist.layout-1x1 {
  /* fill phone */
}


/* Q1 free layout from 投放板 q1Layout */
.sw-bottom.sw-bottom-free {
  position: relative;
  display: block;
}
.layout-free .sw-face-frame,
.layout-free .sw-waist-frame {
  position: absolute;
  margin: 0;
  aspect-ratio: auto;
  height: auto;
  width: auto;
  max-width: none;
  border-radius: 2px;
  overflow: hidden;
  z-index: 1;
}
.layout-free .sw-face-frame {
  /* HUD / pleasure-tag stay inside face frame via absolute children */
}
.sw-controls.sw-controls-free {
  position: absolute;
  flex: none;
  min-width: 0;
  padding: 4px;
  gap: 4px;
  background: transparent;
  z-index: 3;
  box-sizing: border-box;
}
.sw-controls-free .hold-ring-wrap {
  width: 100%;
  height: 100%;
  max-width: none;
  flex: 1 1 auto;
  min-height: 0;
}
.sw-controls-free {
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible;
}
.sw-controls-free .hold-ring-wrap {
  position: relative;
}
.sw-controls-free .hold-ring-svg {
  position: absolute;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  max-width: none;
  max-height: none;
}
.sw-controls-free .hold-ring-btn {
  inset: 14%;
  font-size: clamp(0.55rem, 11cqi, 0.95rem);
  line-height: 1.15;
  padding: 0;
}

.sw-controls-free .waist-meta {
  position: absolute;
  top: -22px;
  left: 50%;
  transform: translateX(-50%);
  white-space: nowrap;
  font-size: 10px;
  z-index: 4;
  pointer-events: none;
}
.sw-controls-free .sw-hint {
  position: absolute;
  bottom: -28px;
  left: 50%;
  transform: translateX(-50%);
  width: max-content;
  max-width: 12em;
  pointer-events: none;
}
.sw-controls-free .yank-flash {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 5;
}


/* Success: scattered hearts */
.fx-hearts {
  position: absolute; inset: 0; pointer-events: none; z-index: 40;
  overflow: hidden;
}
.fx-heart {
  position: absolute;
  bottom: 32%;
  font-size: 22px;
  opacity: 0;
  transform: translate(-50%, 0) scale(0.6);
  animation: fx-heart-fly linear forwards;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.45));
}
@keyframes fx-heart-fly {
  0%   { opacity: 0; transform: translate(-50%, 10px) scale(0.5); }
  12%  { opacity: 1; transform: translate(calc(-50% + var(--dx, 0px) * 0.2), -10px) scale(1); }
  100% { opacity: 0; transform: translate(calc(-50% + var(--dx, 0px)), -140px) scale(1.15); }
}


/* Catch / soft-fail: red flash + micro shake */
.fx-catch-flash {
  position: absolute; inset: 0; z-index: 50; pointer-events: none;
  background: radial-gradient(ellipse at center, rgba(220,40,40,0.55), rgba(120,0,0,0.35) 55%, transparent 75%);
  opacity: 0;
}
.fx-catch-flash.go {
  animation: fx-catch-flash 0.48s ease-out forwards;
}
@keyframes fx-catch-flash {
  0%   { opacity: 0.95; }
  35%  { opacity: 0.7; }
  100% { opacity: 0; }
}
.fx-catch-shake {
  animation: fx-catch-shake 0.42s linear;
}
@keyframes fx-catch-shake {
  0%, 100% { transform: translate(0, 0); }
  12% { transform: translate(-3px, 1px); }
  24% { transform: translate(3px, -2px); }
  36% { transform: translate(-2px, 2px); }
  48% { transform: translate(2px, 1px); }
  60% { transform: translate(-1px, -1px); }
  72% { transform: translate(1px, 0); }
}
.split-waist.fx-catch-shake,
.qte-root.fx-catch-shake {
  /* shake the whole QTE layer */
}


/* QTE2 禁声：预播 + 末3秒左滑叠层 */
.hush-stage { position:absolute; inset:0; background:#000; overflow:hidden; }
.hush-vid { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; background:#000; }
.hush-vid.hidden { display:none !important; }
.hush-miss {
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  text-align:center; color:rgba(255,255,255,.75); font-size:.85rem; line-height:1.5;
  background:repeating-linear-gradient(-45deg,#1a1a1a,#1a1a1a 8px,#222 8px,#222 16px);
  padding:1rem; z-index:1;
}
.hush-overlay {
  position:absolute; inset:0; z-index:5; display:flex; flex-direction:column;
  align-items:center; justify-content:flex-end; gap:.55rem; padding:0 1rem 18%;
  background:linear-gradient(to top, rgba(0,0,0,.55), transparent 55%);
  pointer-events:auto;
}
.hush-overlay.hidden { display:none !important; }
.hush-overlay .countdown {
  font-size:2.4rem; font-weight:700; color:#fff; text-shadow:0 2px 8px rgba(0,0,0,.8);
  letter-spacing:.05em;
}
.hush-overlay .swipe-hint { color:#ffe08a; font-size:.95rem; }
.hush-overlay .swipe-zone {
  width:min(86%, 320px); min-height:72px; border:1.5px dashed rgba(255,224,138,.7);
  border-radius:12px; display:flex; align-items:center; justify-content:center;
  color:rgba(255,255,255,.85); background:rgba(0,0,0,.25); touch-action:none;
}


/* QTE2 失败尾帧复活 */
.hush-revive {
  position: absolute; inset: 0; z-index: 8;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 0.6rem; pointer-events: auto;
}
.hush-revive.hidden { display: none !important; }
.hush-revive-dim {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.55), rgba(0,0,0,.15) 45%, transparent 70%);
  pointer-events: none;
}
.hush-revive .btn-revive {
  position: relative; z-index: 1;
  min-width: 148px; padding: 0.85rem 1.4rem;
  border: none; border-radius: 999px;
  font-size: 1.15rem; font-weight: 700; letter-spacing: 0.12em;
  color: #1a0a0a; background: linear-gradient(180deg, #ffe08a, #f0a020);
  box-shadow: 0 4px 18px rgba(0,0,0,.45);
  cursor: pointer;
}
.hush-revive .btn-revive:active { transform: scale(0.97); }
.hush-revive-sub {
  position: relative; z-index: 1;
  font-size: 0.8rem; color: rgba(255,255,255,.8);
  text-shadow: 0 1px 4px rgba(0,0,0,.8);
}


/* 预播进度指引（投放板试玩可见） */
.hush-prep {
  position: absolute; left: 0; right: 0; bottom: 14%; z-index: 4;
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  pointer-events: none; padding: 0 12px;
}
.hush-prep.hidden { display: none !important; }
.hush-prep .prep-label {
  font-size: 11px; color: #f2e8d8; text-shadow: 0 1px 4px #000; text-align: center;
}
.hush-prep .prep-bar {
  width: 78%; height: 4px; border-radius: 999px;
  background: rgba(255,255,255,.18); overflow: hidden;
}
.hush-prep .prep-fill {
  height: 100%; width: 0%;
  background: linear-gradient(90deg, #f0d78c, #e07a6a);
  transition: width 0.1s linear;
}

.hush-prep .prep-ghost-swipe {
  margin-top: 4px;
  padding: 10px 14px;
  border: 1.5px dashed rgba(255,224,138,.55);
  border-radius: 12px;
  color: rgba(255,255,255,.75);
  font-size: 11px;
  background: rgba(0,0,0,.28);
  display: flex; align-items: center; gap: 6px;
}
.hush-prep .prep-ghost-swipe .swipe-arrows {
  color: #f0d78c; letter-spacing: -0.12em; animation: hushPulse 0.9s ease infinite;
}
@keyframes hushPulse { 50% { opacity: 0.4; transform: translateX(-3px); } }


/* —— QTE2 禁声：紧迫倒计时 + 左滑进度 + 转场 —— */
.hush-stage { position:absolute; inset:0; background:#000; overflow:hidden; }
.hush-vid {
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; background:#000;
  transition: opacity 0.28s ease;
}
.hush-vid.hidden { display:none !important; }
.hush-vid.fade-in { animation: hushVidIn 0.35s ease both; }
.hush-vid.fade-out { opacity: 0; }
@keyframes hushVidIn { from { opacity: 0; } to { opacity: 1; } }

.hush-fade {
  position:absolute; inset:0; z-index:20; pointer-events:none;
  opacity:0; transition: opacity 0.2s ease;
  background: #000;
}
.hush-fade.on { opacity: 0.55; }
.hush-fade.urgent.on { background: radial-gradient(circle at 50% 40%, rgba(220,40,40,.55), rgba(0,0,0,.75)); opacity: 0.7; }
.hush-fade.ok.on { background: radial-gradient(circle, rgba(240,215,140,.35), rgba(0,0,0,.5)); }
.hush-fade.bad.on { background: radial-gradient(circle, rgba(180,30,30,.45), rgba(0,0,0,.7)); }
.hush-fade.soft.on { background: #000; opacity: 0.45; }

.hush-prep { display: none !important; } /* 播放中不要预告 */

.hush-overlay {
  position:absolute; inset:0; z-index:6;
  display:flex; flex-direction:column; align-items:center; justify-content:flex-end;
  gap: 0.45rem; padding: 0 0.85rem 14%;
  background:
    linear-gradient(to top, rgba(80,0,0,.55), transparent 48%),
    linear-gradient(to bottom, rgba(0,0,0,.25), transparent 30%);
  pointer-events:auto;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.25s ease, transform 0.25s ease;
}
.hush-overlay.hidden { display:none !important; }
.hush-overlay.in { opacity: 1; transform: translateY(0); }
.hush-overlay.out { opacity: 0; transform: translateY(6px); }
.hush-overlay.warn {
  background:
    linear-gradient(to top, rgba(120,30,0,.25), transparent 50%),
    linear-gradient(to bottom, rgba(0,0,0,.14), transparent 30%);
}
.hush-overlay.critical {
  background:
    linear-gradient(to top, rgba(160,0,0,.55), transparent 55%),
    linear-gradient(to bottom, rgba(40,0,0,.28), transparent 35%);
  animation: hushShake 0.18s linear infinite;
}
@keyframes hushShake {
  0%,100% { transform: translateX(0); }
  25% { transform: translateX(-2px); }
  75% { transform: translateX(2px); }
}

.hush-urgent-flash {
  position:absolute; inset:0; pointer-events:none;
  background: radial-gradient(circle at 50% 30%, rgba(255,60,60,.28), transparent 60%);
  animation: hushFlash 0.7s ease infinite;
  opacity: 0.4;
}
.hush-overlay.warn .hush-urgent-flash { animation-duration: 0.55s; opacity: 0.35; }
.hush-overlay.critical .hush-urgent-flash { animation-duration: 0.35s; opacity: 0.72; }
@keyframes hushFlash { 50% { opacity: 0.25; } }

.hush-urgent-banner {
  position: relative; z-index: 1;
  font-size: 0.95rem; font-weight: 800; letter-spacing: 0.18em;
  color: #ffd0c8; text-shadow: 0 0 12px rgba(255,40,40,.8), 0 2px 4px #000;
  animation: hushBanner 0.6s ease infinite;
}
@keyframes hushBanner { 50% { opacity: 0.55; transform: scale(1.04); } }

.hush-overlay .countdown {
  position: relative; z-index: 1;
  font-size: 2.8rem; font-weight: 900; color: #fff;
  font-variant-numeric: tabular-nums;
  text-shadow: 0 0 18px rgba(255,80,60,.9), 0 2px 8px #000;
  letter-spacing: 0.04em;
  line-height: 1;
}
.hush-overlay .countdown.warn { color: #ffc8a0; }
.hush-overlay .countdown.critical {
  color: #ff6a5a;
  animation: hushCdPulse 0.35s ease infinite;
}
@keyframes hushCdPulse { 50% { transform: scale(1.12); } }

.hush-overlay .countdown-sub {
  position: relative; z-index: 1;
  font-size: 0.82rem; font-weight: 700; color: #ffe08a;
  text-shadow: 0 1px 4px #000;
}

.hush-overlay .swipe-hint {
  position: relative; z-index: 1;
  color: #ffe08a; font-size: 0.9rem;
  display: flex; align-items: center; gap: 6px;
}
.hush-overlay .swipe-arrows {
  letter-spacing: -0.16em; font-size: 1.35rem;
  animation: hushArrow 0.55s ease infinite;
}
@keyframes hushArrow { 50% { opacity: 0.35; transform: translateX(-6px); } }

.hush-overlay .swipe-zone {
  position: relative; z-index: 1;
  width: min(88%, 220px);
  min-height: 78px;
  border: 2px solid rgba(255,224,138,.75);
  border-radius: 14px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 4px;
  color: #fff; background: rgba(0,0,0,.4);
  touch-action: none; user-select: none;
  box-shadow: 0 0 0 1px rgba(255,80,60,.25), 0 8px 24px rgba(0,0,0,.35);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.hush-overlay .swipe-zone.almost {
  border-color: #ffc86a;
  box-shadow: 0 0 16px rgba(255,180,60,.45);
}
.hush-overlay .swipe-zone.full {
  border-color: #7ec99a;
  box-shadow: 0 0 18px rgba(100,220,140,.5);
}
.hush-overlay .swipe-track {
  width: 86%; height: 10px; border-radius: 999px;
  background: rgba(255,255,255,.16); overflow: hidden;
  margin-top: 2px;
}
.hush-overlay .swipe-fill,
.swipe-fill {
  height: 100%; min-height: 8px; width: 0%;
  border-radius: 999px;
  background: linear-gradient(90deg, #ff8a6a, #ffe08a 55%, #9ee0a8);
  box-shadow: 0 0 8px rgba(255,200,100,.6);
  transition: width 40ms linear;
}
.hush-overlay .swipe-pct {
  font-size: 0.78rem; font-weight: 800; color: #ffe08a;
  font-variant-numeric: tabular-nums;
}
.hush-overlay .swipe-caption {
  font-size: 0.7rem; color: rgba(255,255,255,.75);
}

.hush-urgent .hush-stage::after {
  content: "";
  position: absolute; inset: 0; z-index: 3; pointer-events: none;
  box-shadow: inset 0 0 48px rgba(180,20,20,.45);
  animation: hushVignette 0.7s ease infinite;
}
@keyframes hushVignette { 50% { box-shadow: inset 0 0 70px rgba(220,30,30,.65); } }

.hush-revive {
  position: absolute; inset: 0; z-index: 9;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 0.6rem; pointer-events: auto;
  opacity: 0; transition: opacity 0.3s ease;
}
.hush-revive.hidden { display: none !important; }
.hush-revive.in { opacity: 1; }
.hush-revive-dim {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.6), rgba(0,0,0,.2) 45%, transparent 70%);
  pointer-events: none;
}


/* aliases / final polish */
.hush-overlay .swipe-zone.almost { border-color:#ffc86a; box-shadow:0 0 16px rgba(255,180,60,.45); }
.hush-prep, #dqHushPrep { display:none !important; }
.hush-vid.fade-out { opacity:0; transition:opacity .28s ease; }
#q2-try-host.hush-urgent {
  box-shadow: inset 0 0 40px rgba(180,20,20,.4);
}


/* QTE2 success pleasure tag (sibling of overlay inside hush-stage) */
.hush-stage .pleasure-tag {
  position: absolute;
  top: 12px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 12;
  pointer-events: none;
}


/* ===== station7: 到站 StationTimeline（样式沿用 QTE1：金色圆键 / 红闪+抖动 / tip 按钮 / 半透明提示条） ===== */
.st-root { position: absolute; inset: 0; background: #000; overflow: hidden; }
.st-split { position: absolute; inset: 0; display: flex; flex-direction: column; background: #000; }
.st-stage { flex: 0 0 50%; position: relative; min-height: 0; overflow: hidden; background: #000; }
.st-win { position: absolute; overflow: hidden; background: #141014; z-index: 1; }
.st-vid { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background: #141014; z-index: 0; }
.st-vid.hidden { display: none !important; }
.st-full { position: absolute; inset: 0; background: #000; z-index: 5; }
.st-full .st-vid { background: #000; }
.st-full.hidden, .st-split.hidden { display: none !important; }
.st-miss {
  position: absolute; inset: 0; z-index: 1;
  display: flex; align-items: center; justify-content: center;
  text-align: center; padding: 10px; font-size: 11px; color: rgba(245,230,208,0.55);
  background: repeating-linear-gradient(45deg,#2a1a22,#2a1a22 8px,#22141c 8px,#22141c 16px);
}
.st-miss.hidden { display: none !important; }
/* 上屏边缘光：B 泛红(克制) / D 开头绿 / 被发现闪红 */
.st-edge { position: absolute; inset: 0; z-index: 3; pointer-events: none; box-shadow: inset 0 0 0 rgba(0,0,0,0); transition: box-shadow 0.25s ease; }
.st-edge.warn { box-shadow: inset 0 0 22px 3px rgba(224, 90, 80, 0.32); }
.st-edge.go { box-shadow: inset 0 0 26px 5px rgba(126, 201, 154, 0.62); }
.st-edge.hit { animation: st-edge-hit 0.52s ease-out; }
@keyframes st-edge-hit {
  0%   { box-shadow: inset 0 0 40px 14px rgba(230, 40, 40, 0.95); }
  100% { box-shadow: inset 0 0 22px 3px rgba(224, 90, 80, 0.0); }
}
/* 统一提示组件 .st-tip（A 提示 / B 别动 / 被发现了！ / D 现在 全用它）：
   同一字体、半透明黑底(沿用 .pt-subtitle)、同一淡入淡出；仅文字与位置(x/y/w/h/字号，可在到站布局板编辑)不同 */
.st-tip {
  position: absolute; z-index: 8; box-sizing: border-box;
  display: flex; align-items: center; justify-content: center;
  pointer-events: none; opacity: 0; transition: opacity 0.28s ease;
}
.st-tip.show { opacity: 1; }
.st-tip-text {
  max-width: 100%; padding: 8px 12px; border-radius: 10px;
  background: rgba(0, 0, 0, 0.5);
  color: #f2e8d8; text-align: center; line-height: 1.35;
  text-shadow: 0 1px 3px rgba(0,0,0,0.85);
  font-family: "PingFang SC", "Noto Sans SC", system-ui, sans-serif; font-weight: 600;
}
.st-tip:not(.show) .st-tip-text { visibility: hidden; transition: visibility 0s linear 0.3s; }
.st-tip.show .st-tip-text { visibility: visible; }
.st-skip { position: absolute; top: 108px; right: 12px; z-index: 9; padding: 6px 12px; font-size: 12px; }
.st-skip.hidden { display: none !important; }
/* 单按钮：QTE1 长按环同款金色圆键 */
.st-btn-box { position: absolute; z-index: 4; display: flex; align-items: center; justify-content: center; box-sizing: border-box; }
.st-btn {
  width: 100%; height: 100%; aspect-ratio: 1 / 1; max-width: 100%; max-height: 100%;
  border-radius: 50%; border: none; cursor: pointer;
  background: radial-gradient(circle at 40% 35%, #e8c878, #8f6b28);
  color: #1a140c; font-weight: 700; font-size: 0.95rem; line-height: 1.15; padding: 0;
  box-shadow: 0 4px 16px rgba(0,0,0,0.4);
  touch-action: manipulation;
}
.st-btn:active:not(:disabled) { background: radial-gradient(circle at 40% 35%, #ffe8a0, #c9a24d); }
.st-btn:disabled { opacity: 0.4; filter: grayscale(0.85); cursor: not-allowed; }

/* 顶栏时间轴 .st-tl：随视频走的进度轴，只标站程阶段；D 段色块区分时间窗(无文字)；与 .st-tip 同底色/字体 */
.st-tl { position: absolute; z-index: 9; box-sizing: border-box; pointer-events: none; }
.st-tl-segs { position: absolute; inset: 0; display: flex; gap: 2px; }
.st-tl-seg {
  position: relative; flex: 0 0 auto; min-width: 0; box-sizing: border-box; overflow: hidden;
  border-radius: 6px; background: rgba(0,0,0,0.5); border: 1px solid rgba(242,232,216,0.22);
  display: flex; align-items: center; justify-content: center;
}
.st-tl-lab {
  position: relative; z-index: 1; padding: 0 2px; white-space: nowrap; overflow: hidden; text-overflow: clip;
  color: rgba(242,232,216,0.92); text-shadow: 0 1px 3px rgba(0,0,0,0.85);
  font-family: "PingFang SC", "Noto Sans SC", system-ui, sans-serif; font-weight: 600; line-height: 1;
}
.st-tl-win { position: absolute; left: 0; right: 0; bottom: 0; height: 28%; display: flex; z-index: 0; }
.st-tl-win i { display: block; height: 100%; }
.st-tl-win .w1 { background: rgba(126, 201, 154, 0.75); }
.st-tl-win .w2 { background: rgba(224, 90, 80, 0.7); }
.st-tl-win .w3 { background: rgba(212, 175, 100, 0.8); }
.st-tl-head {
  position: absolute; top: -3px; bottom: -3px; width: 2px; margin-left: -1px; z-index: 2;
  background: #f0d78c; box-shadow: 0 0 6px rgba(240,215,140,0.9); border-radius: 1px;
}

/* ===== station7: 换键(WITHDRAW/REACH)、掉爽感全屏反馈 ===== */
.st-btn-box { container-type: inline-size; }
.st-btn {
  position: relative; letter-spacing: 0.05em; font-weight: 800; text-transform: uppercase;
  font-size: clamp(9px, 15cqi, 22px); border: 2px solid transparent;
  transition: filter 0.2s ease, box-shadow 0.2s ease;
}
/* WITHDRAW：亮青/电蓝渐变 + 发光边 */
.st-btn.st-btn-w {
  background: radial-gradient(circle at 38% 30%, #7ff3ff 0%, #18b7ff 48%, #1656e8 100%);
  color: #04182c; border-color: rgba(190, 250, 255, 0.95);
  text-shadow: 0 0 6px rgba(255,255,255,0.55);
  box-shadow: 0 0 0 2px rgba(60,200,255,0.35), 0 0 22px 4px rgba(40,190,255,0.75), inset 0 0 14px rgba(255,255,255,0.35);
}
/* REACH：亮粉红/洋红 + 发光边 */
.st-btn.st-btn-r {
  background: radial-gradient(circle at 38% 30%, #ffa6dd 0%, #ff3fa4 48%, #b0117a 100%);
  color: #2a0018; border-color: rgba(255, 210, 240, 0.95);
  text-shadow: 0 0 6px rgba(255,255,255,0.5);
  box-shadow: 0 0 0 2px rgba(255,80,190,0.35), 0 0 22px 4px rgba(255,60,175,0.75), inset 0 0 14px rgba(255,255,255,0.3);
}
/* 可点：呼吸脉冲 */
.st-btn:not(:disabled) { animation: st-btn-pulse 1.25s ease-in-out infinite; }
@keyframes st-btn-pulse {
  0%, 100% { transform: scale(1);    filter: brightness(1); }
  50%      { transform: scale(1.07); filter: brightness(1.22); }
}
.st-btn:active:not(:disabled) { transform: scale(0.95); animation: none; filter: brightness(1.35); }
/* 不可点(如 REACH 未到窗口)：暗灰、无发光、无脉冲，仍显示文字 */
.st-btn:disabled, .st-btn.st-btn-r:disabled, .st-btn.st-btn-w:disabled {
  background: radial-gradient(circle at 40% 32%, #4a4a52, #26262c) !important;
  color: #7c7c86 !important; border-color: rgba(120,120,130,0.4) !important; text-shadow: none !important;
  box-shadow: inset 0 0 8px rgba(0,0,0,0.5) !important; filter: none !important; opacity: 1; animation: none !important;
}
/* 切换瞬间闪光 */
.st-btn.flash::after {
  content: ""; position: absolute; inset: -4px; border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle, rgba(255,255,255,0.95), rgba(255,255,255,0) 70%);
  animation: st-btn-flash 0.42s ease-out forwards;
}
@keyframes st-btn-flash { 0% { opacity: 1; transform: scale(0.7); } 100% { opacity: 0; transform: scale(1.35); } }

/* (1) 全屏边缘呼吸暗角：冷蓝 → 暗红，越低越强 */
.st-vig { position: absolute; inset: 0; z-index: 10; pointer-events: none; opacity: 0; transition: opacity 0.5s ease; --vig-i: 0; --vig-rgb: 50,85,200; --vig-dur: 2.6s; }
.st-vig.on { opacity: 1; }
.st-vig-in {
  position: absolute; inset: 0;
  box-shadow: inset 0 0 calc(40px + 90px * var(--vig-i)) calc(4px + 26px * var(--vig-i)) rgba(var(--vig-rgb), calc(0.22 + 0.5 * var(--vig-i)));
  animation: st-vig-breathe var(--vig-dur) ease-in-out infinite;
}
@keyframes st-vig-breathe { 0%, 100% { opacity: 0.55; } 50% { opacity: 1; } }
/* (3) 接近阈值：屏幕轻微抖动 */
.st-root.st-shake { animation: st-shake 0.32s linear infinite; }
@keyframes st-shake {
  0%, 100% { transform: translate(0, 0); } 20% { transform: translate(-1.5px, 0.8px); }
  40% { transform: translate(1.5px, -1px); } 60% { transform: translate(-1px, -0.8px); } 80% { transform: translate(1px, 1px); }
}
/* 阈值触发：淡出 */
.st-fade { position: absolute; inset: 0; z-index: 20; background: #000; opacity: 0; pointer-events: none; transition: opacity 0.5s ease; }
.st-fade.on { opacity: 1; pointer-events: auto; }


/* ===== FingerSwipeRing (station14) ===== */
.finger-stage { position:absolute; inset:0; background:#1a1018; overflow:hidden; }
.finger-vid { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; background:#000; }
.finger-miss {
  position:absolute; left:8%; right:8%; top:38%; padding:14px 12px;
  background:rgba(20,12,16,0.78); color:#f5e6d0; text-align:center;
  border-radius:12px; font-size:0.85rem; z-index:3;
}
.finger-ui { position:absolute; inset:0; z-index:2; pointer-events:none; }
.finger-ui > * { pointer-events:auto; }
.finger-caption {
  position:absolute; left:10%; right:10%; bottom:18%;
  text-align:center; color:#f5e6d0; font-size:0.9rem;
  text-shadow:0 1px 4px rgba(0,0,0,0.7);
}
.finger-hold .sub-line { color:#f5e6d0; margin-bottom:10px; text-align:center; }
.finger-arrow { font-size:2rem; line-height:1; color:#f0d78c; }
.swipe-down-zone.almost { border-color:rgba(240,215,140,0.75); }
.swipe-down-zone.full { border-color:#7ec99a; background:rgba(126,201,154,0.12); }
.finger-swipe-bar {
  width:10px; height:72px; border-radius:6px;
  background:rgba(255,255,255,0.15); overflow:hidden; margin-top:6px;
}
.finger-swipe-bar > div {
  width:100%; height:0%; background:linear-gradient(0deg,#f0d78c,#7ec99a);
  position:absolute; bottom:0; left:0;
}
.finger-swipe-bar { position:relative; }
.finger-swipe-pct { font-size:0.7rem; color:rgba(245,230,208,0.8); }


/* ===== FingerSwipeRing station17 长条左置·无边框·可布局 ===== */
.finger-still {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; background: #1a1018; z-index: 0;
}
.finger-swipe-hit {
  position: absolute; z-index: 3; box-sizing: border-box;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 6px; color: #f5e6d0; touch-action: none;
  border: none; background: transparent; border-radius: 0;
}
.finger-swipe-hit.almost .finger-longbar-fill { filter: brightness(1.08); }
.finger-swipe-hit.full .finger-longbar-fill { background: linear-gradient(0deg, #b8e6c4, #7ec99a); }
.finger-swipe-label {
  font-size: 0.72rem; letter-spacing: 0.04em; opacity: 0.85;
  text-shadow: 0 1px 4px rgba(0,0,0,0.75); pointer-events: none; white-space: nowrap;
}
.finger-longbar {
  position: relative; flex: 1 1 auto; width: 55%; min-width: 10px; max-width: 28px;
  height: auto; min-height: 40%; border-radius: 999px;
  background: rgba(255,255,255,0.16); border: none; overflow: visible;
}
.finger-longbar-fill {
  position: absolute; left: 0; right: 0; bottom: 0; height: 0%;
  border-radius: inherit;
  background: linear-gradient(0deg, #f0d78c, #7ec99a);
}
.finger-longbar-knob {
  position: absolute; left: 50%; bottom: 0%; width: 22px; height: 22px;
  margin-left: -11px; margin-bottom: -11px; border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #fff6d0, #e0b84a);
  box-shadow: 0 0 10px rgba(240,215,140,0.75); pointer-events: none; border: none;
}
.finger-hold-wrap {
  position: absolute; z-index: 3; box-sizing: border-box;
  display: flex; align-items: center; justify-content: center;
  pointer-events: none;
}
.finger-hold-wrap .hold-ring-wrap {
  width: 100%; height: 100%; max-width: 100%; max-height: 100%;
  pointer-events: auto;
}
.finger-hold-wrap .hold-ring-svg { width: 100%; height: 100%; }
/* 圆心透明：只留描边环 + 透明热区 */
.finger-hold-btn.hold-ring-btn,
.finger-hold-wrap .hold-ring-btn {
  inset: 12%;
  background: transparent !important;
  box-shadow: none !important;
  color: rgba(245, 230, 208, 0.88);
  font-size: clamp(0.65rem, 3.2cqi, 0.9rem);
  text-shadow: 0 1px 4px rgba(0,0,0,0.75);
}
.finger-hold-wrap .hold-ring-btn.active {
  background: rgba(240, 215, 140, 0.12) !important;
  color: #fff6d0;
}
.finger-hold-wrap .sub-line {
  position: absolute; left: 50%; top: -1.4em; transform: translateX(-50%);
  white-space: nowrap; font-size: 0.75rem; color: #f5e6d0;
  text-shadow: 0 1px 4px rgba(0,0,0,0.7); pointer-events: none;
}

/* 指戏布局板 */
.fgb-phone {
  position: relative; width: min(280px, 42vw); aspect-ratio: 9/16;
  margin: 0 auto; background: #1a1218; border-radius: 18px; overflow: hidden;
  border: 1px solid rgba(255,255,255,0.12);
}
.fgb-layer {
  position: absolute; box-sizing: border-box; border: 1px dashed rgba(240,215,140,0.55);
  background: rgba(240,215,140,0.12); color: #f5e6d0; font-size: 0.7rem;
  display: flex; align-items: center; justify-content: center; cursor: move; user-select: none;
}
.fgb-layer.active { border-color: #7ec99a; background: rgba(126,201,154,0.18); }
.fgb-layer .fgb-resize {
  position: absolute; right: -5px; bottom: -5px; width: 14px; height: 14px;
  background: #f0d78c; border-radius: 3px; cursor: nwse-resize;
}
.fgb-fields { display: grid; grid-template-columns: auto 1fr 1fr 1fr 1fr; gap: 6px 8px; align-items: center; font-size: 0.78rem; }
.fgb-fields input { width: 100%; }


/* ===== station18：下滑箭头动态提示（随下滑条布局） ===== */
.finger-arrow-hint {
  position: absolute; left: 50%; top: 6%; transform: translateX(-50%);
  z-index: 4; pointer-events: none; text-align: center;
  color: #f0d78c; filter: drop-shadow(0 1px 4px rgba(0,0,0,0.65));
  animation: finger-arrow-bob 1.05s ease-in-out infinite;
  transition: opacity 0.2s ease;
}
.finger-arrow-hint.dim { opacity: 0.35; animation-play-state: paused; }
.finger-arrow-hint.gone { opacity: 0; visibility: hidden; animation: none; }
.finger-arrow-glyph {
  display: block; font-size: clamp(1.1rem, 28cqi, 1.7rem); line-height: 1;
  font-weight: 700;
}
.finger-arrow-chevs {
  display: flex; flex-direction: column; align-items: center; gap: 2px; margin-bottom: 2px;
}
.finger-arrow-chevs i {
  display: block; width: 10px; height: 10px;
  border-right: 2px solid rgba(240,215,140,0.85);
  border-bottom: 2px solid rgba(240,215,140,0.85);
  transform: rotate(45deg);
  opacity: 0.25;
  animation: finger-chev-pulse 1.05s ease-in-out infinite;
}
.finger-arrow-chevs i:nth-child(1) { animation-delay: 0s; }
.finger-arrow-chevs i:nth-child(2) { animation-delay: 0.15s; }
.finger-arrow-chevs i:nth-child(3) { animation-delay: 0.3s; }
@keyframes finger-arrow-bob {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(10px); }
}
@keyframes finger-chev-pulse {
  0%, 100% { opacity: 0.2; }
  40% { opacity: 1; }
}
.finger-swipe-hit.swiping .finger-arrow-hint { opacity: 0.25; }


/* ===== Q4Rhythm station20 ===== */
.q4-stage { position:absolute; inset:0; background:#140e14; overflow:hidden; }
.q4-still, .q4-vid {
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover; background:#000;
}
.q4-miss {
  position:absolute; left:8%; right:8%; top:36%; z-index:3; padding:12px;
  background:rgba(20,12,16,0.78); color:#f5e6d0; text-align:center; border-radius:12px; font-size:0.85rem;
}
.q4-ui {
  position:absolute; left:0; right:0; bottom:8%; z-index:4;
  display:flex; flex-direction:column; align-items:center; gap:10px; pointer-events:none;
}
.q4-status {
  color:#f5e6d0; font-size:0.95rem; font-weight:700; letter-spacing:0.06em;
  text-shadow:0 1px 4px rgba(0,0,0,0.75);
}
.q4-hint { color:rgba(245,230,208,0.8); font-size:0.75rem; text-shadow:0 1px 3px #000; }
.q4-hint.ready { color:#ffe8a0; font-weight:700; }
.q4-ring-wrap {
  position:relative; width:118px; height:118px; pointer-events:auto;
}
.q4-ring-svg { width:100%; height:100%; transform:rotate(-90deg); }
.q4-ring-track { stroke:rgba(255,255,255,0.22); stroke-width:7; }
.q4-ring-fill {
  stroke:#f0d78c; stroke-width:7; stroke-linecap:round;
  stroke-dasharray:263.89; stroke-dashoffset:263.89;
  transition:stroke 0.12s linear;
}
.q4-ring-fill.full { stroke:#7ec99a; }
.q4-hold-btn {
  position:absolute; inset:16%; border-radius:50%; border:none;
  background:rgba(0,0,0,0.25); color:#f5e6d0; font-weight:800; font-size:0.95rem;
  letter-spacing:0.08em; cursor:pointer; touch-action:none;
  text-shadow:0 1px 4px rgba(0,0,0,0.7);
}
.q4-hold-btn.active { background:rgba(240,215,140,0.18); }
.q4-hold-btn.ready { color:#ffe8a0; box-shadow:0 0 16px rgba(126,201,154,0.45); }
.q4-hold-btn:disabled { opacity:0.5; cursor:default; }


/* ===== Q4 満能能量特效 station21 ===== */
.q4-stage.is-power .q4-ring-fill.full {
  stroke: #ffe8a0;
  filter: drop-shadow(0 0 6px rgba(255, 232, 160, 0.85));
  animation: q4-ring-pulse 0.9s ease-in-out infinite;
}
.q4-stage.is-power .q4-hold-btn.ready {
  color: #fff6d0;
  box-shadow: 0 0 22px rgba(255, 220, 120, 0.65), inset 0 0 18px rgba(255, 200, 80, 0.25);
  animation: q4-btn-pulse 1.1s ease-in-out infinite;
}
.q4-stage.is-power .q4-status {
  color: #ffe8a0;
  text-shadow: 0 0 12px rgba(255, 220, 120, 0.7), 0 1px 4px #000;
}
.q4-power-fx {
  position: absolute; left: 50%; bottom: calc(8% + 40px); width: 200px; height: 200px;
  margin-left: -100px; margin-bottom: -20px; pointer-events: none; z-index: 3;
  opacity: 0; transition: opacity 0.25s ease;
}
.q4-power-fx.on { opacity: 1; }
.q4-power-aura {
  position: absolute; inset: 18%; border-radius: 50%;
  background: radial-gradient(circle, rgba(255,230,140,0.35) 0%, rgba(255,180,60,0.12) 45%, transparent 70%);
  animation: q4-aura-breathe 1.2s ease-in-out infinite;
}
.q4-power-ring-glow {
  position: absolute; inset: 22%; border-radius: 50%;
  border: 2px solid rgba(255, 232, 160, 0.55);
  box-shadow: 0 0 18px rgba(255, 210, 100, 0.5), inset 0 0 14px rgba(255, 220, 120, 0.25);
  animation: q4-glow-spin 2.4s linear infinite;
}
.q4-spark {
  position: absolute; left: 50%; top: 50%; width: 6px; height: 6px; margin: -3px;
  border-radius: 50%; background: #ffe8a0;
  box-shadow: 0 0 8px #ffd060, 0 0 14px rgba(255, 200, 80, 0.7);
  --ang: calc(var(--i) * 45deg);
  transform: rotate(var(--ang)) translateY(-72px) scale(0.6);
  animation: q4-spark 1.05s ease-in-out infinite;
  animation-delay: calc(var(--i) * 0.08s);
  opacity: 0.85;
}
@keyframes q4-aura-breathe {
  0%, 100% { transform: scale(0.92); opacity: 0.75; }
  50% { transform: scale(1.08); opacity: 1; }
}
@keyframes q4-glow-spin {
  from { transform: rotate(0deg) scale(1); }
  to { transform: rotate(360deg) scale(1.04); }
}
@keyframes q4-spark {
  0%, 100% { opacity: 0.35; transform: rotate(var(--ang)) translateY(-64px) scale(0.45); }
  50% { opacity: 1; transform: rotate(var(--ang)) translateY(-78px) scale(1); }
}
@keyframes q4-ring-pulse {
  0%, 100% { stroke-width: 7; }
  50% { stroke-width: 9; }
}
@keyframes q4-btn-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.04); }
}





/* ===== Pose2 三选点 + 布局 station25 ===== */
.pose2-stage { position:absolute; inset:0; overflow:hidden; background:#140e14; }
.pose2-stage.is-video-still { background:transparent; }
.pose2-stage.is-video-still .pose2-bg-empty { background:transparent; }
.pose2-bg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.pose2-bg-empty { background:radial-gradient(ellipse at 50% 30%, #2a1c28, #120c12 70%); }
.pose2-line {
  position:absolute; left:6%; right:6%; top:8%; z-index:2; text-align:center;
  color:#f5e6d0; font-weight:700; font-size:0.95rem; letter-spacing:0.06em;
  text-shadow:0 1px 4px #000; pointer-events:none;
}
.pose2-pick {
  position:absolute; z-index:3; margin:0; padding:0 8px;
  border:1px solid rgba(245,230,208,0.35); border-radius:12px;
  background:rgba(20,12,18,0.55); color:#f5e6d0; font-weight:800; font-size:0.92rem;
  letter-spacing:0.04em; cursor:pointer; touch-action:manipulation;
  display:flex; align-items:center; justify-content:center;
  text-shadow:0 1px 3px #000;
}
.pose2-pick.btn-primary { background:rgba(240,215,140,0.22); border-color:rgba(240,215,140,0.55); }
.pose2-pick.is-picked { opacity:0; pointer-events:none; }
.p2b-layer { font-size:12px; }


/* station28：Pose2 选项叠在尾帧/静帧上 — host 勿遮底 */
#pt-qte-host.pose2-clear-bg {
  background: transparent !important;
  padding: 0 !important;
  box-shadow: none !important;
}
#pt-qte-host.pose2-clear-bg .pose2-stage {
  background: transparent;
}


/* ===== Q5 accel mash（假亿万富翁 accel · densha 移植） station30 ===== */
#pt-qte-host.dq-mash-active {
  background: transparent !important;
  padding: 0 !important;
}
.dq-mash-stage {
  position: absolute; inset: 0; overflow: hidden;
  background: linear-gradient(180deg, #502838, #180c14);
}
.dq-mash-video {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; z-index: 1;
}
.dq-mash-video.hidden { display: none !important; }
.dq-mash-layer {
  position: absolute; inset: 0; z-index: 5;
  pointer-events: none;
}
.dq-mash-top {
  position: absolute; left: 6%; right: 6%; top: 8%;
  display: flex; flex-direction: column; gap: 8px;
  pointer-events: none; z-index: 6;
}
.dq-mash-prompt {
  color: #e8d48b; font-weight: 800; font-size: 15px;
  letter-spacing: 0.08em; text-align: center;
  text-shadow: 0 2px 10px #000;
}
.dq-mash-tip {
  position: absolute; z-index: 7; pointer-events: none;
  color: #fff4d2; font-weight: 800; text-align: center;
  letter-spacing: 0.06em;
  text-shadow: 0 2px 10px #000, 0 0 14px rgba(0,0,0,.65);
  display: flex; align-items: center; justify-content: center;
  padding: 4px 6px; box-sizing: border-box;
  opacity: 0.95;
}
.dq-mash-tip.pulse-tip {
  animation: dq-mash-tip-pulse 0.55s ease-out;
}
@keyframes dq-mash-tip-pulse {
  0% { transform: scale(1); opacity: 1; color: #ffd27a; }
  40% { transform: scale(1.06); opacity: 1; }
  100% { transform: scale(1); opacity: 0.95; }
}
#pt-qte-host.dq-mash-phase-b .dq-mash-top { opacity: 0.35; }
#pt-qte-host.dq-mash-phase-b .dq-mash-hit { pointer-events: none !important; visibility: hidden; }
/* station44：B 段 tip（准备高潮）保持可见 */
#pt-qte-host.dq-mash-phase-b .dq-mash-tip { opacity: 1; visibility: visible; z-index: 8; }
.dq-mash-meter {
  height: 10px; border-radius: 999px;
  background: rgba(0,0,0,.45);
  box-shadow: inset 0 0 0 1px rgba(232,212,139,.35);
  overflow: hidden;
}
.dq-mash-fill {
  display: block; height: 100%; width: 0%;
  background: linear-gradient(90deg, #c9a227, #f6e09a);
  box-shadow: 0 0 12px rgba(246,224,154,.55);
  transition: width .08s linear;
}
.dq-mash-layer.is-success .dq-mash-fill {
  background: linear-gradient(90deg, #5dca8a, #b6f0c8);
}
.dq-mash-layer.is-fail .dq-mash-meter {
  box-shadow: inset 0 0 0 1px rgba(232,120,120,.5);
}
.dq-mash-stats {
  display: flex; justify-content: space-between;
  color: #e8e6e0; font-size: 12px; font-weight: 700;
  text-shadow: 0 2px 8px #000;
}
.dq-mash-rate {
  font-variant-numeric: tabular-nums; color: #f6e09a;
  min-width: 3.2em; text-align: center;
}
.dq-mash-shock {
  position: absolute; inset: 0; pointer-events: none; z-index: 4;
  background: radial-gradient(circle at 50% 48%, rgba(255,120,140,.28), transparent 55%);
  opacity: 0;
}
.dq-mash-shock.go { animation: dq-mash-shock .2s ease-out; }
@keyframes dq-mash-shock {
  0% { opacity: .85; }
  100% { opacity: 0; }
}
.dq-mash-hit {
  position: absolute; z-index: 8;
  pointer-events: auto !important;
  appearance: none; border: none; padding: 0;
  background: rgba(255, 210, 140, 0.06); /* station37: 热区底略可见 */
  box-shadow: inset 0 0 0 1px rgba(255, 220, 160, 0.22);
  border-radius: 12px;
  cursor: pointer;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  overflow: visible;
  min-width: 72px; min-height: 110px;
}
.dq-mash-hit-img {
  width: 100%; height: 100%; object-fit: contain;
  display: block; pointer-events: none;
  filter: drop-shadow(0 0 14px rgba(255,255,255,.55));
  opacity: 0.94; /* station37: 小量提高中间 PNG / 热区可见度 */
}
.dq-mash-hit.pulse {
  animation: dq-mash-pulse .18s ease-out;
}
.dq-mash-hit.pulse .dq-mash-hit-img {
  opacity: 1;
  filter: drop-shadow(0 0 18px rgba(255,255,255,.85));
}
@keyframes dq-mash-pulse {
  0% { transform: scale(1); }
  40% { transform: scale(1.08); }
  100% { transform: scale(1); }
}
#pt-qte-host.dq-mash-stage-2 .dq-mash-hit-img,
#pt-qte-host.dq-mash-stage-3 .dq-mash-hit-img {
  opacity: 0.98;
  filter: drop-shadow(0 0 18px rgba(255,255,255,.78));
}
#pt-qte-host.dq-mash-stage-3 .dq-mash-fill {
  background: linear-gradient(90deg, #ff6b7a, #f6e09a);
}


/* Q5 mash layout board station32 */
.q5b-stage-bg {
  position: absolute; inset: 0;
  background:
    radial-gradient(900px 500px at 50% 20%, rgba(120, 50, 70, 0.35), transparent 55%),
    linear-gradient(180deg, #502838, #180c14);
}
.q5b-layer {
  display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,0.04) !important;
  border: 1px dashed rgba(245,230,208,0.45) !important;
  padding: 0 !important;
  overflow: visible;
}
.q5b-layer.active {
  border-color: #f0d78c !important;
  background: rgba(240,215,140,0.08) !important;
}
.q5b-hit-img {
  width: 100%; height: 100%; object-fit: contain;
  pointer-events: none; display: block;
  filter: drop-shadow(0 0 12px rgba(255,255,255,0.45));
  opacity: 0.94; /* station37: 布局板热区预览与试玩一致 */
}
#btn-open-q5-mash-board.q5-mash-btn-flash {
  box-shadow: 0 0 0 2px rgba(240, 215, 140, 0.85), 0 0 18px rgba(232, 160, 176, 0.45);
  animation: pose2BtnPulse 0.8s ease-in-out 2;
}
