.section_live-lab{position:relative;z-index:2;padding:6rem 1rem;background:var(--dark-black,#1d1d1d);color:var(--white,#fff);overflow:clip}
.live-lab_intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(16rem,28rem);gap:1rem;padding:0 1rem 2.5rem}
.live-lab_intro .live-lab_kicker{grid-column:1/-1;color:var(--purple,#ae6cff);margin:0}
.live-lab_intro h2{margin:0;line-height:1.1}
.live-lab_intro>p:last-child{margin:0;color:var(--grey-50,#888);line-height:1.6}
.live-lab_grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));border-top:1px solid #ffffff26;border-left:1px solid #ffffff26}
.lab-card{position:relative;min-width:0;min-height:28rem;display:flex;flex-direction:column;padding:1rem;border-right:1px solid #ffffff26;border-bottom:1px solid #ffffff26;background:#181818;overflow:hidden;isolation:isolate}
.lab-card:before,.lab-card:after{position:absolute;z-index:4;color:var(--purple,#ae6cff);line-height:1;pointer-events:none}
.lab-card:before{content:"┌";left:-.08rem;top:-.12rem}.lab-card:after{content:"┘";right:-.08rem;bottom:-.12rem}
.lab-card--pokemon{grid-column:span 7;grid-row:span 2;min-height:58rem}.lab-card--phai{grid-column:span 5;min-height:29rem}.lab-card--open2jam{grid-column:span 5;min-height:29rem}.lab-card--sino{grid-column:span 5;min-height:30rem}.lab-card--signal{grid-column:span 7;min-height:30rem;padding:0}
.lab-card_header,.lab-card_footer,.lab-card_actions{position:relative;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:1rem}
.lab-card_header{padding-bottom:1rem;color:#c9c9c9}.lab-card_header span:last-child{color:var(--purple,#ae6cff);text-align:right}
.lab-card_footer{margin:auto -1rem -1rem;padding:1rem;justify-content:flex-start;flex-wrap:wrap;border-top:1px solid #ffffff20;color:#777}.lab-card_footer span+span:before{content:" + ";color:var(--purple,#ae6cff)}
.lab-card_actions{margin-top:1rem}.lab-card_actions>span{color:#777;text-align:right}.lab-card_link{position:relative;z-index:3;display:inline-block;align-self:flex-start;margin:1rem 0;color:#c6a7ff;text-decoration:none;border-bottom:1px solid #775997;padding-bottom:.25rem}.lab-card_link:hover{color:#fff;border-color:#fff}

.pokemon-arena{position:relative;display:grid;grid-template-columns:1fr auto 1fr;gap:1rem;align-items:center;min-height:25rem;margin:0 -1rem;padding:2rem;background:radial-gradient(circle at 50% 50%,#7d45b52a,transparent 55%),linear-gradient(#111,#1a1a1a)}
.pokemon-gym-strip{display:flex;justify-content:space-between;gap:1rem;margin:0 -1rem;padding:.55rem 1rem;border-top:1px solid #ffffff20;color:#888}.pokemon-gym-strip span:last-child{color:var(--purple,#ae6cff);text-align:right}
.lab-card--pokemon .pokemon-arena{flex:1}
.pokemon-arena:after{content:"";position:absolute;inset:auto 7% 10%;height:1px;background:linear-gradient(90deg,transparent,#fff5,transparent)}
.pokemon-side{position:relative;z-index:1;display:flex;flex-direction:column;gap:.5rem;align-items:flex-start}.pokemon-side--foe{align-items:flex-end;text-align:right}.pokemon-sprite-wrap{display:flex;align-items:center;justify-content:center;width:100%;height:12rem;filter:drop-shadow(0 1.2rem 1rem #0009)}.pokemon-sprite-wrap img{width:auto;height:auto;max-width:75%;max-height:9rem;image-rendering:pixelated;transform:scale(1.5)}.pokemon-side strong,.pokemon-side span{display:block}.pokemon-side span{color:#888;margin-top:.35rem}.pokemon-vs{color:#777}.pokemon-hp{width:min(12rem,100%);height:.4rem;background:#383838}.pokemon-hp i{display:block;width:100%;height:100%;background:#b478f8;transform-origin:left;transition:width .32s ease,background .32s ease}.pokemon-console{padding:1.25rem 0;border-block:1px solid #ffffff20}.pokemon-console>p{min-height:3.2em;margin:0 0 1rem;color:#aaa;line-height:1.6}.pokemon-results{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#ffffff20}.pokemon-results span{display:flex;flex-direction:column;gap:.45rem;padding:.8rem;background:#181818;color:#777}.pokemon-results b{color:#fff}.pokemon-results span:last-child b{color:var(--purple,#ae6cff)}

.phai-slider{position:relative;flex:1;min-height:16rem;background:#efece3;color:#171717;overflow:hidden}.phai-slide{position:absolute;inset:0;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(8rem,.8fr);opacity:0;transform:translateX(1rem);transition:opacity .25s ease,transform .25s ease}.phai-slide.is-active{opacity:1;transform:none}.phai-slide img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.05)}.phai-slide>div{display:flex;flex-direction:column;justify-content:flex-end;padding:1rem;background:#d9b2ff}.phai-slide strong{display:block;margin-bottom:.75rem}.phai-slide p{margin:0;line-height:1.45}.phai-controls{display:grid;grid-template-columns:auto 1fr auto auto;gap:.75rem;align-items:center;padding-top:1rem}.phai-controls button{width:2.25rem;height:2.25rem;border:1px solid #ffffff2b;color:#fff;background:transparent;cursor:pointer}.phai-controls input{width:100%;accent-color:var(--purple,#ae6cff)}.phai-controls span{color:#777}

.jam-meta{display:grid;grid-template-columns:4rem 1fr auto;align-items:center;gap:1rem;margin-bottom:1rem}.jam-meta img{width:4rem;height:4rem;object-fit:cover;filter:grayscale(1)}.jam-meta strong,.jam-meta span{display:block}.jam-meta span{color:#777;margin-top:.35rem}.jam-meta>b{color:var(--purple,#ae6cff)}
.jam-stage{position:relative;flex:1;min-height:12rem;overflow:hidden;border:1px solid #ffffff20;background:linear-gradient(180deg,#070707,#24202a)}.jam-stage:after{content:"";position:absolute;z-index:2;left:0;right:0;bottom:12%;height:2px;background:var(--purple,#ae6cff);box-shadow:0 0 1rem #ae6cff}.jam-lanes{position:absolute;inset:0;display:grid;grid-template-columns:repeat(7,1fr)}.jam-lanes i{border-right:1px solid #ffffff12}.jam-lanes i:last-child{border:0}.jam-note{position:absolute;z-index:1;top:0;width:calc(100% / 7 - .35rem);height:.65rem;background:#ededed;transform:translateY(-1rem)}.jam-note.is-hit{background:var(--purple,#ae6cff);box-shadow:0 0 1rem #ae6cff}.jam-note.is-missed{opacity:.15}.jam-judgement{position:absolute;z-index:3;left:0;right:0;top:44%;text-align:center;color:#fff;text-shadow:0 0 .75rem #000}.jam-keys{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem;margin-top:.5rem}.jam-keys button{min-width:0;padding:.6rem .1rem;border:1px solid #ffffff24;background:#222;color:#aaa;cursor:pointer}.jam-keys button.is-active{color:#171717;background:#d9b2ff}.jam-keys button:nth-child(4){color:#fff;background:#45305a}.jam-keys button:nth-child(4).is-active{color:#171717;background:#d9b2ff}
.jam-note[data-lane="1"]{background:#61d7ff}.jam-note[data-lane="3"]{background:#b66cff}.jam-note[data-lane="5"]{background:#ffd166}.jam-note[data-lane="1"].is-hold{background:linear-gradient(#61d7ff,#216a83)}.jam-note[data-lane="3"].is-hold{background:linear-gradient(#d29bff,#653188)}.jam-note[data-lane="5"].is-hold{background:linear-gradient(#ffe5a0,#8d6b19)}

.sino-stage{flex:1;display:grid;grid-template-columns:5rem 1fr;grid-template-rows:1fr auto;gap:1rem;padding:1.5rem 0}.sino-avatar{display:flex;align-items:center;justify-content:center;width:5rem;height:7rem;color:#111;background:#d9b2ff;box-shadow:.6rem .6rem 0 #55336d;transition:transform .3s ease}.sino-scene{min-width:0}.sino-scene>span{color:var(--purple,#ae6cff)}.sino-scene p{min-height:6.5em;margin:1rem 0;color:#ddd;line-height:1.65}.sino-choices{display:flex;gap:1rem;color:#777}.sino-choices .is-picked{color:#fff}.sino-meter{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr auto;gap:.75rem;align-items:center;color:#777}.sino-meter>div{height:.35rem;background:#333}.sino-meter i{display:block;height:100%;width:50%;background:var(--purple,#ae6cff);transition:width .45s ease}.sino-meter b{color:#fff}.sino-stage.is-shifting .sino-avatar{transform:translateY(-.4rem) rotate(-2deg)}

.lab-card--signal .lab-card_header{position:absolute;z-index:3;inset:1rem 1rem auto}.lab-card--signal canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair}.signal-copy{position:absolute;z-index:3;left:1rem;bottom:4.5rem;pointer-events:none}.signal-copy strong{display:block;color:#fff}.signal-copy p{margin:.45rem 0 0;color:#777}.lab-card--signal .lab-card_footer{position:absolute;z-index:3;left:1rem;right:1rem;bottom:1rem;margin:0;padding:1rem 0 0}

@media(max-width:991px){.lab-card--pokemon,.lab-card--phai,.lab-card--open2jam,.lab-card--sino,.lab-card--signal{grid-column:span 12}.lab-card--pokemon{grid-row:auto;min-height:48rem}.pokemon-arena{min-height:20rem}.live-lab_intro{grid-template-columns:1fr}}
@media(max-width:600px){.section_live-lab{padding:4rem 0}.live-lab_intro{padding-inline:1rem}.lab-card{min-height:26rem}.lab-card--pokemon{min-height:45rem}.pokemon-arena{grid-template-columns:1fr 2rem 1fr;min-height:17rem;padding:1rem}.pokemon-sprite-wrap{height:9rem}.pokemon-sprite-wrap img{transform:scale(1.2)}.pokemon-results{gap:0}.pokemon-results span{padding:.6rem .4rem}.phai-slide{grid-template-columns:1fr}.phai-slide img{height:9rem}.phai-slide>div{justify-content:center}.jam-meta{grid-template-columns:3.2rem 1fr auto}.jam-meta img{width:3.2rem;height:3.2rem}.lab-card_actions{align-items:flex-start;flex-direction:column}.lab-card_actions>span{text-align:left}}
@media(prefers-reduced-motion:reduce){.phai-slide,.pokemon-hp i,.sino-avatar,.sino-meter i{transition:none}}

/* Live Systems v2: native report charts, full-song play, and squad battles. */
.pokemon-sprite-wrap{position:relative}
.pokemon-side.is-attacking .pokemon-sprite-wrap img{animation:pokemon-attack .36s ease}
.pokemon-side--foe.is-attacking .pokemon-sprite-wrap img{animation-name:pokemon-attack-reverse}
.pokemon-side.is-hit .pokemon-sprite-wrap img{animation:pokemon-hit .34s steps(2)}
.pokemon-side.is-winner .pokemon-sprite-wrap img{animation:pokemon-win .65s ease 2}
.pokemon-damage,.pokemon-heal{position:absolute;z-index:3;top:18%;left:50%;opacity:0;color:#fff;text-shadow:0 2px #000;pointer-events:none}
.pokemon-heal{color:#7cffab}.pokemon-damage.is-active{animation:pokemon-value .72s ease}.pokemon-heal.is-active{animation:pokemon-value .9s ease}
.pokemon-squad{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1px;margin:0 -1rem;background:#ffffff20}
.pokemon-squad_member{position:relative;min-width:0;padding:.65rem .25rem;text-align:center;background:#181818;color:#777}
.pokemon-squad_member img{display:block;width:auto;height:2.5rem;max-width:100%;margin:0 auto .35rem;image-rendering:pixelated}
.pokemon-squad_member span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pokemon-squad_member i{display:block;height:2px;margin:.4rem auto 0;background:#b478f8}
.pokemon-squad_member.is-active{color:#fff;background:#261e2e}.pokemon-squad_member.is-winner:after,.pokemon-squad_member.is-down:after{position:absolute;inset:.25rem .25rem auto auto}
.pokemon-squad_member.is-winner:after{content:"WIN";color:#7cffab}.pokemon-squad_member.is-down{opacity:.38}.pokemon-squad_member.is-down:after{content:"KO";color:#ff7185}
.pokemon-final-squad{position:absolute;z-index:5;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.5rem;background:#111e;backdrop-filter:blur(8px);text-align:center}.pokemon-final-squad>span{color:var(--purple,#ae6cff)}.pokemon-final-squad>strong{margin:1rem 0 1.5rem;color:#fff}.pokemon-final-squad>div{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.5rem;width:100%}.pokemon-final-squad figure{min-width:0;margin:0;padding:.6rem .2rem;border:1px solid #ffffff20;background:#181818}.pokemon-final-squad img{display:block;width:auto;height:3.4rem;max-width:100%;margin:0 auto .5rem;image-rendering:pixelated}.pokemon-final-squad figcaption,.pokemon-final-squad small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pokemon-final-squad small{margin-top:.3rem;color:#777}
@keyframes pokemon-attack{50%{transform:translateX(3rem) scale(1.65)}}
@keyframes pokemon-attack-reverse{50%{transform:translateX(-3rem) scale(1.65)}}
@keyframes pokemon-hit{25%,75%{opacity:.15;filter:brightness(3)}50%{transform:translateX(.6rem) scale(1.5)}}
@keyframes pokemon-win{50%{transform:translateY(-1.2rem) scale(1.65)}}
@keyframes pokemon-value{0%{opacity:0;transform:translate(-50%,.5rem) scale(.7)}25%{opacity:1}100%{opacity:0;transform:translate(-50%,-3rem) scale(1.25)}}

.phai-slide img{display:none}.phai-chart{position:relative;min-width:0;overflow:hidden;padding:1rem;background:#f4f1e9}
.phai-slide>.phai-map{position:relative;min-width:0;overflow:hidden;padding:0;background:#f4f1e9}.phai-map canvas{position:absolute;inset:0;width:100%;height:100%}.phai-map>span{position:absolute;z-index:2;left:1rem;bottom:1rem;color:#555}
.phai-cover-copy{position:relative;overflow:hidden;justify-content:center!important;background:#d9b2ff!important}.phai-cover-copy strong{font-size:clamp(2.5rem,4vw,3.5rem)!important;line-height:.9;white-space:nowrap}.phai-cover-copy p{margin-top:1.25rem!important;line-height:1.25!important}
.phai-slide>div:last-child{display:flex;flex-direction:column;justify-content:flex-end;padding:1rem;background:#d9b2ff}
.phai-chart_title{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:1rem;color:#1a1a1a}.phai-chart_title span{color:#777}
.phai-bars{display:flex;height:10rem;align-items:flex-end;gap:.55rem;border-bottom:1px solid #999}.phai-bar{position:relative;flex:1;height:var(--value);min-width:0;background:#171717;transform-origin:bottom}.phai-bar:nth-child(even){background:#9a64c4}.phai-bar b{position:absolute;left:0;right:0;top:-1.2rem;text-align:center;color:#171717}.phai-bar span{position:absolute;left:50%;top:calc(100% + .45rem);width:6rem;transform:translateX(-50%);text-align:center;color:#555;font-size:10px!important;line-height:1.1}
.phai-ranks{display:grid;gap:.55rem}.phai-rank{display:grid;grid-template-columns:6.2rem 1fr 2.4rem;align-items:center;gap:.5rem}.phai-rank i{display:block;width:var(--value);height:.8rem;background:#171717}.phai-rank:nth-child(even) i{background:#9a64c4}
.phai-blocks{display:grid;grid-template-columns:repeat(2,1fr);gap:.55rem;height:11rem}.phai-block{display:flex;flex-direction:column;justify-content:space-between;padding:.7rem;background:#171717;color:#fff}.phai-block:first-child{grid-row:span 2;background:#9a64c4}
.phai-rings{position:relative;width:12rem;height:12rem;margin:auto}.phai-ring{position:absolute;inset:var(--inset);border:var(--stroke) solid #171717;border-right-color:#9a64c4;border-radius:50%;transform:rotate(var(--turn))}.phai-ring_label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center}.phai-ring_key{display:flex;justify-content:center;gap:.75rem;margin-top:-.25rem;color:#555}.phai-ring_key i{color:#9a64c4;font-style:normal}
.phai-slide.is-animating .phai-chart_title{animation:phai-fade-up .38s ease both}.phai-slide.is-animating .phai-bar{animation:phai-grow .55s cubic-bezier(.2,.8,.2,1) both}.phai-slide.is-animating .phai-bar:nth-child(2){animation-delay:.07s}.phai-slide.is-animating .phai-bar:nth-child(3){animation-delay:.14s}.phai-slide.is-animating .phai-bar:nth-child(4){animation-delay:.21s}
.phai-slide.is-animating .phai-rank{animation:phai-fade-right .42s ease both}.phai-slide.is-animating .phai-rank:nth-child(2){animation-delay:.07s}.phai-slide.is-animating .phai-rank:nth-child(3){animation-delay:.14s}.phai-slide.is-animating .phai-rank:nth-child(4){animation-delay:.21s}.phai-slide.is-animating .phai-rank i{animation:phai-width .55s cubic-bezier(.2,.8,.2,1) both;transform-origin:left}
.phai-slide.is-animating .phai-block{animation:phai-block-in .45s ease both}.phai-slide.is-animating .phai-block:nth-child(2){animation-delay:.07s}.phai-slide.is-animating .phai-block:nth-child(3){animation-delay:.14s}.phai-slide.is-animating .phai-block:nth-child(4){animation-delay:.21s}
.phai-slide.is-animating .phai-ring{animation:phai-ring-in .65s cubic-bezier(.2,.8,.2,1) both}.phai-slide.is-animating>div:last-child>*{animation:phai-fade-up .45s ease .12s both}.phai-slide.is-animating .phai-cover-copy>*{animation:phai-fade-up .55s ease both}
@keyframes phai-grow{from{transform:scaleY(0)}}@keyframes phai-width{from{transform:scaleX(0)}}@keyframes phai-fade-up{from{opacity:0;transform:translateY(1rem)}}@keyframes phai-fade-right{from{opacity:0;transform:translateX(-1rem)}}@keyframes phai-block-in{from{opacity:0;clip-path:inset(100% 0 0)}}@keyframes phai-ring-in{from{opacity:0;transform:rotate(calc(var(--turn) - 90deg)) scale(.65)}to{opacity:1;transform:rotate(var(--turn)) scale(1)}}

.jam-note.is-hold{height:2rem;background:linear-gradient(#fff,#a66add)}.jam-time{position:absolute;z-index:3;right:.5rem;bottom:.5rem;color:#888}.jam-progress{height:.25rem;margin-top:.5rem;background:#303030}.jam-progress i{display:block;width:0;height:100%;background:var(--purple,#ae6cff);transition:width .1s linear}

@media(max-width:600px){.pokemon-squad_member{padding:.45rem .1rem}.pokemon-squad_member img{height:1.8rem}.pokemon-squad_member span{font-size:8px!important}.pokemon-final-squad>div{grid-template-columns:repeat(3,1fr)}.pokemon-final-squad img{height:2.6rem}.phai-chart{height:10.5rem}.phai-bars{height:6rem}.phai-bar span{display:none}.phai-rings{width:9rem;height:9rem}.phai-slide>div:last-child{justify-content:center}.phai-cover-copy strong{font-size:2rem!important}}
@media(prefers-reduced-motion:reduce){.pokemon-side.is-attacking .pokemon-sprite-wrap img,.pokemon-side--foe.is-attacking .pokemon-sprite-wrap img,.pokemon-side.is-hit .pokemon-sprite-wrap img,.pokemon-side.is-winner .pokemon-sprite-wrap img,.pokemon-damage.is-active,.pokemon-heal.is-active,.phai-slide.is-animating *{animation:none!important}}

/* Six equal live-system cells, staggered like the original fidget grid. */
.section_live-lab{background:transparent}
.live-lab_intro{grid-template-columns:minmax(0,1fr) minmax(16rem,28rem)}
.live-lab_grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:20rem;border:0}
.lab-card{grid-column:auto;grid-row:span 2;min-height:0;border-top:1px solid #ffffff26;border-left:1px solid #ffffff26;background:#181818}
.lab-card:nth-child(1){grid-column:1;grid-row:1/span 2}
.lab-card:nth-child(2){grid-column:2;grid-row:2/span 2}
.lab-card:nth-child(3){grid-column:1;grid-row:3/span 2}
.lab-card:nth-child(4){grid-column:2;grid-row:4/span 2}
.lab-card:nth-child(5){grid-column:1;grid-row:5/span 2}
.lab-card:nth-child(6){grid-column:2;grid-row:6/span 2}
.lab-card--pokemon{min-height:0}.lab-card--pokemon .pokemon-arena{min-height:16rem}.pokemon-sprite-wrap{height:8rem}.pokemon-sprite-wrap img{max-height:6.5rem;transform:scale(1.3)}
.pokemon-console{padding:.8rem 0}.pokemon-console>p{min-height:2.8em;margin-bottom:.6rem}.pokemon-results span{padding:.55rem}.pokemon-squad_member{padding:.4rem .2rem}.pokemon-squad_member img{height:2rem}.lab-card--pokemon .lab-card_actions{margin-top:.6rem}
.sino-avatar{white-space:pre-line;text-align:center;line-height:1.45}
.lab-card--ascii-wave{padding:0;background:transparent}
.lab-card--ascii-wave .lab-card_header{position:absolute;z-index:3;inset:1rem 1rem auto}
.lab-card--ascii-wave canvas{position:absolute;inset:0;width:100%;height:100%}
.ascii-wave-copy{position:absolute;z-index:3;left:1rem;bottom:4.5rem;max-width:28rem;pointer-events:none}
.ascii-wave-copy strong{display:block;color:#fff}.ascii-wave-copy p{margin:.45rem 0 0;color:#888}
.lab-card--ascii-wave .lab-card_footer{position:absolute;z-index:3;left:1rem;right:1rem;bottom:1rem;margin:0;padding:1rem 0 0}

@media(max-width:991px){
  .live-lab_grid{display:grid;grid-template-columns:1fr;grid-auto-rows:auto}
  .lab-card,.lab-card:nth-child(n){grid-column:1;grid-row:auto;height:42rem;min-height:42rem}
  .lab-card--pokemon,.lab-card--signal,.lab-card--ascii-wave{min-height:42rem}
}
@media(max-width:600px){
  .lab-card,.lab-card:nth-child(n),.lab-card--pokemon,.lab-card--signal,.lab-card--ascii-wave{height:42rem;min-height:42rem}
}
