.p3-logo-design-switcher {
  position: fixed;
  top: max(14px, env(safe-area-inset-top, 0px));
  right: 14px;
  z-index: 12040;
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 5px;
  border: 1px solid rgba(174, 207, 231, .18);
  border-radius: 999px;
  background: rgba(4, 7, 13, .78);
  box-shadow: 0 12px 34px rgba(0, 0, 0, .42), inset 0 1px 0 rgba(255, 255, 255, .05);
  -webkit-backdrop-filter: blur(15px) saturate(1.2);
  backdrop-filter: blur(15px) saturate(1.2);
}
.p3-logo-design-switcher__label {
  padding: 0 7px 0 5px;
  color: rgba(174, 196, 216, .6);
  font: 600 8px/1 ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: .14em;
}
.p3-logo-design-switcher button {
  appearance: none;
  min-height: 30px;
  padding: 0 11px;
  color: rgba(207, 219, 231, .6);
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  font: 600 9px/1 ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: .07em;
  cursor: pointer;
}
.p3-logo-design-switcher button.is-active {
  color: #f5fbff;
  border-color: rgba(125, 224, 242, .32);
  background: linear-gradient(110deg, rgba(56, 170, 198, .2), rgba(145, 90, 196, .13));
  box-shadow: inset 0 0 13px rgba(112, 220, 244, .06);
}
.p3-logo-variant-prism {
  position: absolute;
  inset: 0;
  z-index: 40;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transform: none;
  filter: drop-shadow(0 5px 7px rgba(0, 0, 0, .52)) drop-shadow(0 0 10px rgba(173, 211, 241, .12));
  transition: opacity .32s ease, filter .32s ease;
}
/* PRISMは旧PNGロゴ(671:953)の容器比率・マウス傾斜を継承させない。
   ラボのSVG viewBox(380:500)をそのまま表示し、形状差を発生させない。 */
body[data-p3-logo-design="prism"] #bb-logo {
  aspect-ratio: 380 / 500 !important;
  --holo-tilt-x: 0deg !important;
  --holo-tilt-y: 0deg !important;
  --holo-shift-x: 0px !important;
  --holo-shift-y: 0px !important;
  transform: none !important;
  perspective: none !important;
}
.p3-logo-variant-prism > svg,
.p3-logo-variant-prism > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
body[data-p3-logo-design="prism"] #bb-logo > :not(.p3-logo-variant-prism) {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}
body[data-p3-logo-design="prism"] #bb-logo > .p3-logo-variant-prism {
  opacity: 1 !important;
  visibility: visible !important;
}
@media (max-width: 700px) {
  .p3-logo-design-switcher { top: max(9px, env(safe-area-inset-top, 0px)); right: 9px; }
  .p3-logo-design-switcher__label { display: none; }
  .p3-logo-design-switcher button { min-height: 28px; padding: 0 9px; font-size: 8px; }
  .p3-logo-variant-prism { width: 100%; height: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .p3-logo-variant-prism { transition: none; }
}

/* ═══════════════════════════════════════════════════════════════
   2026-07-06 司「全てはコアがあってできた世界。登場はまずコアが最初にあって、
   0と1がホログラムでできるように」— PRISM卵の登場ストーリー演出。
   JS(initBrandParticleReveal)が .prism-entrance を付与→約4.2秒後に除去。
   タイムライン: コア点火(0〜1.15s) → 一拍 → 0(リング)と1(スパイク)が
   ホログラムとして誕生(1.35s〜、ブラー→結像)。
   ═══════════════════════════════════════════════════════════════ */
/* 2026-07-07 司「一番最初っからコアは存在して、そこから全ては生まれる」:
   点火アニメを廃止し、コアは t=0 から完全に在る(0/1・名前がそこから生まれる)。
   旧: animation: prismCoreIgnite 1.15s ... (keyframesは回帰用に温存) */
.p3-logo-variant-prism.prism-entrance [data-part="core"] {
  animation: none;
  opacity: 1;
}
/* 2026-07-06 司「スキャンのタイミング=ブランドネームが出るタイミング。üまで糸が届いたら
   ロゴも完成」: 固定delayをやめ、JSが実際の LIGHT_START / BRAND_LOCK_MS から算出して
   注入するCSS変数で駆動。0/1の結像は名前の光と同時に始まり、糸のü到達で完成する。
   旧: 固定 1.35s/1.75s delay + 1.7s duration */
.p3-logo-variant-prism.prism-entrance [data-part="zero"],
.p3-logo-variant-prism.prism-entrance [data-part="neck"],
.p3-logo-variant-prism.prism-entrance [data-part="neck-depth"],
.p3-logo-variant-prism.prism-entrance [data-part="body-shell"],
.p3-logo-variant-prism.prism-entrance [data-part="body-depth"],
.p3-logo-variant-prism.prism-entrance [data-part="left-facet"],
.p3-logo-variant-prism.prism-entrance [data-part="right-facet"],
.p3-logo-variant-prism.prism-entrance [data-part="ridge-plane"] {
  transform-box: fill-box;
  transform-origin: 50% 28%; /* コア球のある位置から生まれる */
  animation: prismPartBirth var(--prism-zero-dur, 1.7s) cubic-bezier(0.22, 1, 0.36, 1) both;
  animation-delay: var(--prism-zero-delay, 1.35s);
}
/* 1(スパイク)は 0(リング)より一呼吸遅れて始まり、同じ完成点(ü到達)で終わる */
.p3-logo-variant-prism.prism-entrance [data-part="neck"],
.p3-logo-variant-prism.prism-entrance [data-part="neck-depth"],
.p3-logo-variant-prism.prism-entrance [data-part="body-shell"],
.p3-logo-variant-prism.prism-entrance [data-part="body-depth"],
.p3-logo-variant-prism.prism-entrance [data-part="left-facet"],
.p3-logo-variant-prism.prism-entrance [data-part="right-facet"],
.p3-logo-variant-prism.prism-entrance [data-part="ridge-plane"] {
  animation-duration: var(--prism-spike-dur, 1.7s);
  animation-delay: var(--prism-spike-delay, 1.75s);
}
@keyframes prismCoreIgnite {
  0%   { opacity: 0; transform: scale(0.30); }
  55%  { opacity: 1; }
  100% { opacity: 1; transform: scale(1); }
}
@keyframes prismPartBirth {
  0%   { opacity: 0; transform: scale(0.86); filter: blur(4px) brightness(2.1); }
  55%  { opacity: 0.78; filter: blur(0.8px) brightness(1.3); }
  100% { opacity: 1; transform: scale(1); filter: none; }
}
@media (prefers-reduced-motion: reduce) {
  .p3-logo-variant-prism.prism-entrance [data-part] { animation: none; }
}
