*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;background:#050403}body{overflow:hidden;color:#eadbc3;font-family:Georgia,serif}.discover-room{position:relative;width:100vw;height:100vh;height:100svh;overflow:hidden;background:#050403}.discover-lab-bg{position:absolute;inset:0;background:url("../assets/images/discover/discover-laboratory.png") center/cover no-repeat}.discover-room::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 52% 48%,transparent 0 40%,rgba(0,0,0,.08) 70%,rgba(0,0,0,.32) 100%)}.discover-hotspot{position:absolute;z-index:8;border:0;background:transparent;color:#f1e2c9;cursor:pointer}.discover-hotspot i{position:absolute;width:14px;height:14px;border-radius:50%;background:#d18cff;box-shadow:0 0 8px #e4b4ff,0 0 22px #a747e8;animation:dPulse 1.8s ease-in-out infinite}.discover-hotspot span{position:absolute;opacity:0;white-space:nowrap;padding:.5rem .72rem;border:1px solid rgba(222,174,255,.62);border-radius:5px;background:rgba(8,4,10,.88);font:700 .68rem/1 Georgia,serif;letter-spacing:.12em;color:#ead7f6;box-shadow:0 0 20px rgba(180,89,236,.42);transition:.2s}.discover-hotspot::before{content:"";position:absolute;inset:0;border-radius:12px;background:radial-gradient(circle,rgba(203,126,255,.22),transparent 68%);opacity:0;box-shadow:inset 0 0 28px rgba(196,103,255,.18),0 0 30px rgba(174,74,230,.32);transition:.2s}.discover-hotspot:hover::before,.discover-hotspot:focus-visible::before{opacity:1}.discover-hotspot:hover span,.discover-hotspot:focus-visible span{opacity:1}.discover-hotspot:focus-visible{outline:2px solid #d49bfa;outline-offset:2px}.case-hotspot{right:3.8%;top:11%;width:27%;height:43%}.case-hotspot i{right:49%;top:18%}.case-hotspot span{right:42%;top:23%}.lever-hotspot{left:4.3%;top:28%;width:13%;height:34%}.lever-hotspot i{left:50%;top:29%}.lever-hotspot span{left:18%;top:38%}.lever-hotspot:disabled{cursor:not-allowed;opacity:.55}.lever-hotspot:disabled i{background:#79578b;box-shadow:0 0 7px #5d3b70;animation:none}.table-target{position:absolute;z-index:7;left:42%;top:31%;width:14.5%;height:25%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none}.table-target::before{content:"";position:absolute;inset:3%;border:2px solid rgba(219,139,255,.7);box-shadow:0 0 12px #c76cff,0 0 34px rgba(181,79,239,.72),inset 0 0 30px rgba(179,79,233,.25);animation:fieldPulse 2.1s ease-in-out infinite}.table-target-label{position:relative;z-index:2;padding:.34rem .48rem;background:rgba(6,3,8,.76);font:700 clamp(.48rem,.7vw,.68rem)/1.2 Georgia,serif;letter-spacing:.09em;color:#e2c7ef}.table-target img{position:relative;z-index:3;display:none;width:82%;height:72%;object-fit:contain;filter:drop-shadow(0 0 10px rgba(211,139,255,.8))}.table-target b{position:relative;z-index:3;display:none;margin-top:.22rem;padding:.25rem .4rem;background:rgba(5,3,7,.82);font:400 clamp(.45rem,.62vw,.62rem)/1.15 "Rye",Georgia,serif;color:#f0dfc4}.table-target.loaded .table-target-label{display:none}.table-target.loaded img,.table-target.loaded b{display:block}.lab-status{position:absolute;z-index:8;left:50%;bottom:6.5%;transform:translateX(-50%);padding:.48rem .8rem;border:1px solid rgba(201,137,238,.35);background:rgba(7,4,8,.82);font:700 .62rem/1 Georgia,serif;letter-spacing:.11em;color:#d8b7e9;white-space:nowrap}.discover-back{z-index:20}.lab-flash{position:absolute;z-index:30;inset:0;pointer-events:none;background:#efe6ff;opacity:0}.lab-lightning{position:absolute;z-index:29;top:0;width:4px;height:56%;opacity:0;filter:drop-shadow(0 0 10px #fff) drop-shadow(0 0 22px #b94dff);background:linear-gradient(#fff,#c774ff,#fff);transform-origin:top}.lab-lightning.left{left:28%;transform:rotate(-23deg)}.lab-lightning.right{right:28%;transform:rotate(23deg)}.discover-room.experiment{animation:labShake .14s linear 8}.discover-room.experiment .lab-flash{animation:flashSequence 4.9s linear}.discover-room.experiment .lab-lightning{animation:lightningSequence 4.6s steps(1,end)}.discover-room.experiment .table-target::before{animation:fieldOverload .16s ease-in-out infinite}.discover-room.experiment .discover-lab-bg{animation:labPower 4.9s linear}.specimen-modal,.analysis-modal{position:fixed;z-index:12000;inset:var(--shell-height,72px) 0 0;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.78);backdrop-filter:blur(3px)}.specimen-modal.open,.analysis-modal.open{display:flex}.specimen-case-panel{position:relative;width:min(1180px,94vw);height:min(760px,88vh);padding:1rem 1.25rem 1.3rem;overflow:hidden;border:1px solid rgba(214,170,240,.45);box-shadow:0 0 50px rgba(140,60,184,.38);background:#090707 url("../assets/images/discover/specimen-case-background.png") center/cover no-repeat}.specimen-case-panel::before{content:"";position:absolute;inset:0;background:rgba(2,3,3,.36);pointer-events:none}.specimen-case-title,.specimen-case-instruction,.specimen-grid,.modal-close{position:relative;z-index:2}.specimen-case-title{text-align:center;font:400 clamp(1.4rem,2.7vw,2.4rem)/1 "Rye",Georgia,serif;letter-spacing:.08em;color:#eedcc0;text-shadow:0 3px 10px #000}.specimen-case-instruction{text-align:center;margin:.35rem 0 .8rem;font:700 .65rem/1 Georgia,serif;letter-spacing:.16em;color:#c98ce9}.specimen-grid{height:calc(100% - 72px);display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(4,1fr);gap:.62rem}.specimen-card{position:relative;min-width:0;overflow:hidden;border:1px solid rgba(195,223,205,.32);background:rgba(4,12,9,.68);box-shadow:inset 0 0 22px rgba(98,185,133,.16);cursor:pointer;color:#eadcc8}.specimen-card::before{content:"";position:absolute;inset:0;background:radial-gradient(circle,rgba(196,110,255,.22),transparent 70%);opacity:0;transition:.18s}.specimen-card:hover::before,.specimen-card:focus-visible::before,.specimen-card.selected::before{opacity:1}.specimen-card:hover,.specimen-card:focus-visible,.specimen-card.selected{border-color:#c37bef;box-shadow:0 0 16px rgba(186,96,236,.55),inset 0 0 24px rgba(144,66,188,.22);outline:none}.specimen-card img{display:block;width:100%;height:calc(100% - 31px);object-fit:contain;padding:.28rem;filter:drop-shadow(0 0 8px rgba(179,220,192,.32))}.specimen-card span{display:flex;align-items:center;justify-content:center;height:31px;padding:.2rem .3rem;background:rgba(5,4,5,.88);text-align:center;font:700 clamp(.46rem,.63vw,.66rem)/1.1 Georgia,serif;letter-spacing:.04em}.modal-close{position:absolute;right:.7rem;top:.55rem;width:34px;height:34px;border:1px solid rgba(220,174,244,.4);background:rgba(10,5,12,.86);color:#ead9f2;font-size:1.35rem;cursor:pointer}.analysis-panel{position:relative;width:min(960px,94vw);max-height:88vh;overflow:auto;padding:1.35rem 1.5rem 2rem;border:1px solid rgba(211,159,241,.42);background:linear-gradient(180deg,rgba(17,11,19,.98),rgba(7,6,8,.99));box-shadow:0 0 55px rgba(150,67,195,.38);scrollbar-color:#754390 #110d12}.analysis-kicker{text-align:center;font:700 .62rem/1 Georgia,serif;letter-spacing:.19em;color:#c78ee6}.analysis-panel h1{text-align:center;margin:.45rem 2rem 1rem;font:400 clamp(1.55rem,3vw,2.5rem)/1.1 "Rye",Georgia,serif;color:#efddc1}.master-gauges{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:0 0 1.15rem}.master-gauges>div{padding:.75rem;border:1px solid rgba(207,157,236,.25);background:rgba(255,255,255,.025)}.master-gauges span{font:700 .62rem/1 Georgia,serif;letter-spacing:.12em;color:#cda1e3}.master-gauges b{display:block;margin-top:.35rem;text-align:right;font:400 1.2rem/1 "Rye",Georgia,serif;color:#efd9b8}.gauge{height:12px;margin-top:.5rem;border:1px solid rgba(222,195,232,.2);background:#0b080c;overflow:hidden}.gauge i{display:block;height:100%;width:0;background:linear-gradient(90deg,#63357e,#c875ed,#f1d9ff);box-shadow:0 0 12px #b45ce0;transition:width 1.1s cubic-bezier(.2,.8,.2,1)}.analysis-copy h3{margin:1.2rem 0 .48rem;padding-bottom:.35rem;border-bottom:1px solid rgba(205,155,235,.17);font:400 .88rem/1.15 "Rye",Georgia,serif;letter-spacing:.05em;color:#d3a8e8}.analysis-copy p{margin:.55rem 0;font:.91rem/1.62 Georgia,serif;color:#eadfd0}.analysis-copy blockquote{margin:.7rem 0;padding:.75rem 1rem;border-left:3px solid #9e5abd;background:rgba(106,51,128,.12);font:italic 700 .94rem/1.55 Georgia,serif;color:#f0dfc9}.discover-reading-line{margin:.25rem 0;font:.72rem/1.35 Georgia,serif;letter-spacing:.04em;color:#d6c1de}.discover-source a{color:#d2a6e7}.analyze-another{display:block;margin:1.4rem auto 0;padding:.7rem 1rem;border:1px solid rgba(207,157,236,.4);background:rgba(87,40,104,.3);color:#ead9ef;font:700 .66rem/1 Georgia,serif;letter-spacing:.1em;cursor:pointer}@keyframes dPulse{50%{transform:scale(1.3);box-shadow:0 0 10px #fff,0 0 26px #b653ef}}@keyframes fieldPulse{50%{box-shadow:0 0 18px #d99aff,0 0 44px rgba(183,75,243,.85),inset 0 0 38px rgba(179,79,233,.35)}}@keyframes labShake{0%,100%{transform:translate(0)}25%{transform:translate(-3px,1px)}50%{transform:translate(3px,-1px)}75%{transform:translate(-2px,-2px)}}@keyframes flashSequence{0%,7%,18%,29%,44%,66%,100%{opacity:0}4%,15%,25%,40%,61%{opacity:.72}87%{opacity:.96}90%{opacity:0}}@keyframes lightningSequence{0%,12%,17%,33%,39%,56%,62%,78%,84%,100%{opacity:0}13%,34%,57%,79%{opacity:1}}@keyframes fieldOverload{50%{filter:brightness(1.8)}}@keyframes labPower{0%,100%{filter:none}15%,25%,40%,58%,80%{filter:brightness(1.35) contrast(1.12)}88%{filter:brightness(.25)}}@media(max-width:760px){.case-hotspot{right:1%;width:31%}.lever-hotspot{left:1%;width:18%}.table-target{left:39%;width:21%}.specimen-grid{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(5,1fr)}.specimen-case-panel{height:88vh}.master-gauges{grid-template-columns:1fr}.lab-status{bottom:12%;max-width:80vw;white-space:normal;text-align:center}}@media(prefers-reduced-motion:reduce){.discover-hotspot i,.table-target::before{animation:none}.discover-room.experiment{animation:none}.discover-room.experiment .lab-flash{animation:flashSequence 4.9s linear}.discover-room.experiment .lab-lightning{display:none}}


/* ============================================================
   DISCOVER FIX 1 — LAB ALIGNMENT / HOTSPOTS
   ============================================================ */
.table-target::before{display:none !important}
.table-target.loaded img{
  filter:
    drop-shadow(0 0 8px rgba(226,174,255,.9))
    drop-shadow(0 0 20px rgba(171,78,229,.72)) !important;
}
.lever-hotspot{
  left:8.5% !important;
  top:55% !important;
  width:20% !important;
  height:29% !important;
}
.lever-hotspot i{left:38% !important;top:28% !important}
.lever-hotspot span{
  left:31% !important;
  top:5% !important;
  transform:translateX(-18%) !important;
}
.table-target{
  left:41.1% !important;
  top:32.2% !important;
  width:17.2% !important;
  height:19.5% !important;
}


/* ============================================================
   DISCOVER FIX 2 — FIT / FALSE DOT / PERMANENT SHELL CLEARANCE
   ============================================================ */

/* The room begins below the permanent header because body.has-site-shell
   already supplies the top offset. Make the room exactly the remaining
   viewport height — no second offset and no black gap. */
.discover-room{
  height:calc(100vh - var(--shell-height,72px)) !important;
  height:calc(100svh - var(--shell-height,72px)) !important;
  max-height:calc(100vh - var(--shell-height,72px)) !important;
}

/* Show the ENTIRE approved laboratory artwork inside that space.
   Stretching by a small amount is preferable here to cropping the Monster's
   head or leaving empty bars around the room. */
.discover-lab-bg{
  inset:0 !important;
  background-size:100% 100% !important;
  background-position:center center !important;
}


/* Keep the console switch as the only pull-switch interaction. */
.lever-hotspot{
  z-index:10 !important;
}

/* The specimen-case interaction remains separate and active. */
.case-hotspot{
  z-index:9 !important;
}

@media(max-width:820px){
  .discover-room{
    height:calc(100vh - var(--shell-height,86px)) !important;
    height:calc(100svh - var(--shell-height,86px)) !important;
  }
}


/* ============================================================
   DISCOVER FIX 3 — CLEAN HOTSPOTS
   ============================================================ */

/* The unwanted wall-switch cue is part of the approved background artwork.
   Instead of a round mask, use a soft rectangular stone-toned blend so there
   is no circular "hole" left behind. */
.discover-room::before{
  content:"";
  position:absolute;
  z-index:6;
  left:16.55%;
  top:12.8%;
  width:5.0%;
  height:9.5%;
  pointer-events:none;
  border-radius:0;
  background:
    linear-gradient(90deg,
      rgba(58,45,27,.10),
      rgba(56,43,27,.88) 22%,
      rgba(48,37,25,.98) 48%,
      rgba(54,41,25,.90) 74%,
      rgba(58,45,27,.08)
    );
  box-shadow:none;
  filter:blur(.2px);
  opacity:.96;
}

/* The large lower-left console is the only active switch.
   Make its pulsing cue easy to see. */
.lever-hotspot i{
  width:18px !important;
  height:18px !important;
  left:38% !important;
  top:28% !important;
  background:#d88cff !important;
  box-shadow:
    0 0 10px #fff,
    0 0 20px #d98dff,
    0 0 34px #a73fe8 !important;
  opacity:1 !important;
  animation:dPulse 1.45s ease-in-out infinite !important;
}
.lever-hotspot:disabled{
  opacity:1 !important;
}
.lever-hotspot:disabled i{
  background:#c17ee3 !important;
  box-shadow:
    0 0 7px #f3d9ff,
    0 0 18px #bc68e8,
    0 0 28px rgba(167,63,232,.82) !important;
  animation:dPulse 1.65s ease-in-out infinite !important;
}

/* The specimen cabinet should show ONE cue.
   Position the active pulsing hotspot directly over the purple glow already
   visible in the approved artwork so the two visually merge into one marker. */
.case-hotspot i{
  right:auto !important;
  left:49.2% !important;
  top:3.2% !important;
  width:16px !important;
  height:16px !important;
  opacity:1 !important;
  background:#d18cff !important;
  box-shadow:
    0 0 9px #f3dcff,
    0 0 20px #c66cf0,
    0 0 30px rgba(166,66,224,.85) !important;
}

/* Keep its title close to the same active point. */
.case-hotspot span{
  right:auto !important;
  left:38% !important;
  top:10% !important;
}


/* ============================================================
   DISCOVER FIX 4 — SPECIMEN CASE: ONE VISIBLE HOTSPOT
   The static purple point is baked into the approved background artwork.
   Rather than cover it (which would leave a patch), place the animated
   hotspot directly on top of that exact point so they visually become ONE.
   ============================================================ */
.case-hotspot i{
  right:auto !important;
  left:49.28% !important;
  top:-10.15% !important;
  width:18px !important;
  height:18px !important;
  margin-left:-9px !important;
  margin-top:-9px !important;
  background:#d18cff !important;
  box-shadow:
    0 0 8px #f4ddff,
    0 0 20px #ca73f1,
    0 0 32px rgba(169,68,229,.90) !important;
  opacity:1 !important;
  animation:dPulse 1.55s ease-in-out infinite !important;
}


/* ============================================================
   DISCOVER PHASE 2 — SPECIMENS + REANIMATION EFFECTS
   ============================================================ */

/* Specimen cabinet cards remain the only selection controls. */
.specimen-card{
  transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,filter .16s ease;
}
.specimen-card:hover,.specimen-card:focus-visible{
  transform:translateY(-2px) scale(1.012);
  filter:brightness(1.09);
}
.specimen-card.selected{
  transform:translateY(-2px);
}

/* Selected specimen settles into the center field. */
.table-target.loaded img{
  animation:specimenArrival .42s cubic-bezier(.2,.9,.2,1) both;
}
@keyframes specimenArrival{
  from{opacity:0;transform:scale(.68) translateY(-10px);filter:blur(3px) drop-shadow(0 0 2px #d58fff)}
  to{opacity:1;transform:scale(1) translateY(0);filter:drop-shadow(0 0 10px rgba(211,139,255,.8))}
}

/* The specimen field intensifies only after a specimen is loaded. */
.table-target.loaded{
  filter:drop-shadow(0 0 8px rgba(191,94,242,.3));
}
.table-target.loaded::after{
  content:"";
  position:absolute;
  inset:10% 8%;
  z-index:1;
  border-radius:50%;
  background:radial-gradient(circle,rgba(222,151,255,.24),rgba(126,48,173,.08) 48%,transparent 72%);
  animation:loadedAura 1.9s ease-in-out infinite;
}
@keyframes loadedAura{50%{transform:scale(1.08);opacity:.62}}

/* Full-screen bolt layer. Jagged SVG paths are drawn by discover.js. */
.lab-bolts{
  position:absolute;
  z-index:31;
  inset:0;
  width:100%;
  height:100%;
  pointer-events:none;
  opacity:0;
  overflow:visible;
  filter:
    drop-shadow(0 0 4px #fff)
    drop-shadow(0 0 12px #d48bff)
    drop-shadow(0 0 25px #8e35d4);
}
.lab-bolts path{
  fill:none;
  stroke:#f8efff;
  stroke-width:3.1;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.lab-bolts path.branch{
  stroke-width:1.65;
  opacity:.75;
}

/* A short warning appears during the experiment, but does not obstruct controls
   during normal room use. */
.experiment-warning{
  position:absolute;
  z-index:35;
  left:50%;
  top:12%;
  transform:translateX(-50%) scale(.94);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:.16rem;
  padding:.5rem .9rem;
  opacity:0;
  pointer-events:none;
  border:1px solid rgba(224,170,255,.5);
  background:rgba(7,3,9,.86);
  box-shadow:0 0 25px rgba(176,69,230,.42);
  color:#e8d5ef;
  letter-spacing:.14em;
}
.experiment-warning span{font:700 .55rem/1 Georgia,serif;color:#d39ae9}
.experiment-warning b{font:400 .72rem/1 "Rye",Georgia,serif;color:#f1ddbd}

/* During the experiment, user input is visually and functionally locked. */
.discover-room.experiment .case-hotspot,
.discover-room.experiment .lever-hotspot{
  pointer-events:none;
}
.discover-room.experiment .lab-status{
  border-color:rgba(225,155,255,.7);
  box-shadow:0 0 18px rgba(180,69,231,.32);
}
.discover-room.experiment .experiment-warning{
  animation:warningBeat 5.25s linear both;
}
.discover-room.experiment .lab-bolts{
  animation:boltLayer 5.25s steps(1,end) both;
}

/* Strong horror-movie power sequence:
   blackout/flicker -> sustained electrical assault -> final flash -> settle */
.discover-room.experiment{
  animation:labRattle 5.25s linear both !important;
}
.discover-room.experiment .discover-lab-bg{
  animation:labPowerCycle 5.25s linear both !important;
}
.discover-room.experiment .lab-flash{
  animation:labFlashCycle 5.25s linear both !important;
}
.discover-room.experiment .table-target.loaded{
  animation:targetOverload 5.25s linear both;
}
.discover-room.experiment .table-target.loaded img{
  animation:specimenShock 5.25s linear both;
}

@keyframes warningBeat{
  0%,7%,93%,100%{opacity:0}
  10%,88%{opacity:1;transform:translateX(-50%) scale(1)}
}
@keyframes boltLayer{
  0%,8%,13%,19%,27%,34%,42%,49%,58%,67%,76%,83%,91%,100%{opacity:0}
  9%,14%,20%,28%,35%,43%,50%,59%,68%,77%,84%,92%{opacity:1}
}
@keyframes labRattle{
  0%,7%,100%{transform:none}
  9%{transform:translate(-2px,1px)}
  11%{transform:translate(3px,-1px)}
  13%{transform:translate(-4px,2px)}
  15%{transform:translate(2px,-2px)}
  19%{transform:none}
  30%{transform:translate(2px,0)}
  31%{transform:translate(-3px,1px)}
  32%{transform:translate(2px,-1px)}
  33%{transform:none}
  47%{transform:translate(-3px,-1px)}
  48%{transform:translate(4px,2px)}
  49%{transform:translate(-2px,0)}
  50%{transform:none}
  68%{transform:translate(3px,-1px)}
  69%{transform:translate(-4px,2px)}
  70%{transform:none}
  88%{transform:translate(-5px,2px)}
  89%{transform:translate(5px,-2px)}
  90%{transform:translate(-2px,1px)}
  91%{transform:none}
}
@keyframes labPowerCycle{
  0%{filter:brightness(1)}
  4%{filter:brightness(.22)}
  6%{filter:brightness(1.5) contrast(1.12)}
  8%{filter:brightness(.42)}
  10%{filter:brightness(1.32)}
  14%{filter:brightness(.55)}
  18%{filter:brightness(1.22)}
  24%,82%{filter:brightness(1.13) contrast(1.08)}
  86%{filter:brightness(.20)}
  89%{filter:brightness(1.75) contrast(1.2)}
  92%{filter:brightness(.08)}
  96%,100%{filter:brightness(1)}
}
@keyframes labFlashCycle{
  0%,5%,10%,17%,25%,33%,41%,49%,57%,65%,73%,81%,86%,91%,94%,100%{opacity:0}
  6%{opacity:.82}
  11%{opacity:.48}
  18%{opacity:.65}
  26%{opacity:.58}
  34%{opacity:.80}
  42%{opacity:.46}
  50%{opacity:.70}
  58%{opacity:.54}
  66%{opacity:.72}
  74%{opacity:.58}
  82%{opacity:.76}
  88%{opacity:1}
  92%{opacity:.30}
}
@keyframes targetOverload{
  0%,6%,100%{filter:drop-shadow(0 0 8px rgba(191,94,242,.3))}
  10%,83%{filter:brightness(1.35) drop-shadow(0 0 23px #ce78ff)}
  88%{filter:brightness(2.2) drop-shadow(0 0 42px #f2dfff)}
  92%{filter:brightness(.35)}
}
@keyframes specimenShock{
  0%,8%,100%{transform:translate(0) scale(1)}
  14%{transform:translate(-3px,1px) scale(1.02)}
  15%{transform:translate(3px,-1px) scale(1.01)}
  28%{transform:translate(2px,0) scale(1.025)}
  29%{transform:translate(-3px,1px) scale(1)}
  43%{transform:translate(-2px,-1px) scale(1.03)}
  44%{transform:translate(3px,1px) scale(1)}
  59%{transform:translate(2px,-2px) scale(1.02)}
  60%{transform:translate(-2px,2px) scale(1)}
  76%{transform:translate(-4px,0) scale(1.03)}
  77%{transform:translate(3px,0) scale(1)}
  88%{transform:scale(1.10)}
  92%{transform:scale(.96);opacity:.55}
  96%{transform:scale(1);opacity:1}
}

/* Ensure analysis opens above the permanent shell and remains readable. */
.analysis-modal,.specimen-modal{z-index:12050 !important}
.analysis-panel{scroll-behavior:smooth}

/* Reduced-motion still preserves the sequence without violent movement/strobe. */
@media(prefers-reduced-motion:reduce){
  .discover-room.experiment{animation:none !important}
  .discover-room.experiment .discover-lab-bg{animation:none !important;filter:brightness(.82)}
  .discover-room.experiment .lab-flash{animation:none !important}
  .discover-room.experiment .lab-bolts{animation:none !important;opacity:.42}
  .discover-room.experiment .table-target.loaded,
  .discover-room.experiment .table-target.loaded img{animation:none !important}
}


/* ============================================================
   DISCOVER PHASE 3 — READABILITY + LARGER TABLE SPECIMEN
   ============================================================ */

/* Larger specimen titles in the 20-item case. */
.specimen-card span{
  font-size:clamp(.62rem,.82vw,.84rem) !important;
  line-height:1.16 !important;
  letter-spacing:.035em !important;
  padding:.34rem .30rem .38rem !important;
}

/* Slightly larger case heading/instruction text too. */
.specimen-case-title h2{font-size:clamp(1.15rem,2vw,1.75rem) !important}
.specimen-case-title p{font-size:clamp(.70rem,1vw,.90rem) !important}

/* Make the selected specimen substantially larger on the slab without
   enlarging the purple target/hotspot itself. */
.table-target img{
  width:132% !important;
  height:132% !important;
  max-width:none !important;
  max-height:none !important;
  left:50% !important;
  top:50% !important;
  position:absolute !important;
  transform:translate(-50%,-50%) !important;
  object-fit:contain !important;
}
.table-target.loaded img{
  transform:translate(-50%,-50%) scale(1) !important;
}
@keyframes specimenArrival{
  from{opacity:0;transform:translate(-50%,-50%) scale(.68);filter:blur(3px) drop-shadow(0 0 2px #d58fff)}
  to{opacity:1;transform:translate(-50%,-50%) scale(1);filter:drop-shadow(0 0 10px rgba(211,139,255,.8))}
}
@keyframes specimenShock{
  0%,8%,100%{transform:translate(-50%,-50%) scale(1)}
  14%{transform:translate(calc(-50% - 3px),calc(-50% + 1px)) scale(1.02)}
  15%{transform:translate(calc(-50% + 3px),calc(-50% - 1px)) scale(1.01)}
  28%{transform:translate(calc(-50% + 2px),-50%) scale(1.025)}
  29%{transform:translate(calc(-50% - 3px),calc(-50% + 1px)) scale(1)}
  43%{transform:translate(calc(-50% - 2px),calc(-50% - 1px)) scale(1.03)}
  44%{transform:translate(calc(-50% + 3px),calc(-50% + 1px)) scale(1)}
  59%{transform:translate(calc(-50% + 2px),calc(-50% - 2px)) scale(1.02)}
  60%{transform:translate(calc(-50% - 2px),calc(-50% + 2px)) scale(1)}
  76%{transform:translate(calc(-50% - 4px),-50%) scale(1.03)}
  77%{transform:translate(calc(-50% + 3px),-50%) scale(1)}
  88%{transform:translate(-50%,-50%) scale(1.10)}
  92%{transform:translate(-50%,-50%) scale(.96);opacity:.55}
  96%{transform:translate(-50%,-50%) scale(1);opacity:1}
}


/* ============================================================
   DISCOVER — SPECIMEN CASE CLOSE CONTROL REPAIR
   ============================================================ */
.specimen-case-panel .modal-close#closeSpecimens{
  position:absolute !important;
  z-index:50 !important;
  top:12px !important;
  right:14px !important;
  width:44px !important;
  height:44px !important;
  display:grid !important;
  place-items:center !important;
  padding:0 !important;
  pointer-events:auto !important;
  cursor:pointer !important;
}
