.challenge-shell{width:min(1420px,calc(100% - 32px));margin:32px auto 80px}.challenge-hero{display:flex;justify-content:space-between;gap:28px;align-items:flex-end;padding:38px 42px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(125deg,rgba(124,140,255,.17),rgba(45,212,191,.07) 68%,rgba(246,199,104,.07));box-shadow:var(--shadow);overflow:hidden;position:relative}.challenge-hero:after{content:"";position:absolute;width:340px;height:340px;border:1px solid rgba(159,170,255,.14);border-radius:50%;right:-120px;top:-190px;box-shadow:0 0 90px rgba(124,140,255,.13)}.challenge-hero h1{font-size:clamp(2.3rem,5vw,4.5rem);line-height:1;margin:10px 0 16px}.challenge-hero p:not(.eyebrow){max-width:760px;color:var(--muted);line-height:1.75;margin:0}.challenge-version{z-index:1;display:grid;gap:4px;padding:13px 17px;border:1px solid rgba(255,255,255,.12);border-radius:14px;background:rgba(8,11,16,.56);text-align:right}.challenge-version span{color:var(--green);font-size:.76rem;text-transform:uppercase;letter-spacing:.12em}.challenge-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:22px 0 30px}.challenge-tab{display:flex;justify-content:space-between;align-items:center;min-height:64px;padding:0 18px;border:1px solid var(--line);border-radius:15px;background:var(--panel);color:var(--muted);font-weight:800;text-align:left}.challenge-tab small{display:grid;place-items:center;min-width:28px;height:28px;padding:0 7px;border-radius:999px;background:rgba(255,255,255,.055);color:var(--muted)}.challenge-tab.active{border-color:var(--accent);background:linear-gradient(135deg,rgba(124,140,255,.25),rgba(45,212,191,.09));color:var(--text);box-shadow:0 0 0 1px rgba(124,140,255,.16)}.challenge-loading,.challenge-error,.challenge-empty{padding:48px;border:1px dashed var(--line);border-radius:18px;color:var(--muted);text-align:center}.challenge-empty.compact{padding:25px}.archive-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;padding:0 2px 18px;border-bottom:1px solid var(--line)}.archive-heading h2{font-size:2rem;margin:8px 0 0}.archive-heading p{margin:0;color:var(--muted)}.mode-badge,.period-status,.beta-badge,.weakness-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border:1px solid var(--line);border-radius:999px;background:rgba(31,38,51,.74);color:var(--muted);font-size:.76rem}.mode-badge{border-color:rgba(45,212,191,.35);color:var(--green)}.period-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:18px}.period-card{position:relative;display:flex;flex-direction:column;min-height:188px;padding:18px;border:1px solid var(--line);border-radius:17px;background:linear-gradient(145deg,var(--panel),rgba(124,140,255,.035));color:var(--text);text-align:left;transition:transform .16s ease,border-color .16s ease,background .16s ease}.period-card:hover{transform:translateY(-2px);border-color:rgba(124,140,255,.6);background:linear-gradient(145deg,var(--panel-strong),rgba(124,140,255,.1))}.period-card.active-period{box-shadow:inset 3px 0 var(--green)}.period-card.beta-period{border-color:rgba(246,199,104,.34);background:linear-gradient(145deg,var(--panel),rgba(246,199,104,.065))}.period-id{color:#9eb8ff;font:700 .74rem ui-monospace,monospace;letter-spacing:.07em}.period-status{position:absolute;right:15px;top:14px}.status-active{border-color:rgba(45,212,191,.42);color:var(--green)}.status-upcoming{border-color:rgba(246,199,104,.45);color:var(--amber)}.period-card strong{margin:21px 0 9px;font-size:1.06rem}.period-date{color:var(--muted);font-size:.79rem}.period-meta{display:flex;gap:8px;align-items:center;margin-top:13px}.period-meta b,.period-meta em{font-style:normal;font-size:.72rem}.period-meta b{color:#bd87ff}.period-meta em{color:var(--muted)}.period-open{margin-top:auto;padding-top:16px;color:#b888ff;font-size:.78rem;font-weight:800;text-align:right}.detail-back{margin-bottom:18px;padding:9px 13px;border:1px solid var(--line);border-radius:11px;background:var(--panel);color:var(--muted)}.detail-back:hover{color:var(--text);border-color:var(--accent)}.period-detail-head{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;padding:25px;border:1px solid var(--line);border-radius:20px;background:linear-gradient(130deg,rgba(124,140,255,.11),rgba(22,27,34,.94))}.period-detail-head h2{font-size:2rem;margin:8px 0}.period-detail-head p{margin:0;color:var(--muted)}.detail-badges{display:flex;gap:8px;align-items:center}.beta-badge{border-color:rgba(246,199,104,.48);color:var(--amber)}.detail-section{margin-top:18px;border:1px solid var(--line);border-radius:17px;background:rgba(22,27,34,.88);overflow:hidden}.detail-section>h3{margin:0;padding:16px 18px;border-bottom:1px solid var(--line);font-size:1rem}.buff-grid,.target-grid,.peak-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;padding:14px}.buff-card,.target-card,.peak-card{padding:14px;border:1px solid var(--line);border-radius:13px;background:var(--panel-strong)}.buff-card h4{margin:0 0 8px}.buff-card p{margin:0;color:var(--muted);line-height:1.65;white-space:pre-line}.target-card span{color:var(--muted);line-height:1.5}.highlight-number{color:var(--amber);font-weight:800}.star-control{display:flex;justify-content:flex-end;margin:17px 0}.star-toggle{padding:10px 14px;border:1px solid rgba(246,199,104,.5);border-radius:11px;background:rgba(246,199,104,.09);color:var(--amber);font-weight:800}.star-awakening{position:relative;margin:15px 0;border:1px solid rgba(246,199,104,.62);border-radius:18px;background:linear-gradient(135deg,rgba(246,199,104,.12),rgba(22,27,34,.96) 45%,rgba(124,140,255,.07));box-shadow:0 0 32px rgba(246,199,104,.09);overflow:hidden}.star-label{display:inline-flex;margin:16px 16px 0;padding:6px 10px;border-radius:999px;background:var(--amber);color:#241803;font-size:.74rem;font-weight:900}.star-summary{display:grid;gap:12px;padding:15px 16px 18px}.challenge-stage-shell{display:grid;grid-template-columns:210px minmax(0,1fr);gap:15px;margin-top:20px;align-items:start}.stage-list{position:sticky;top:92px;display:grid;gap:7px;padding:13px;border:1px solid var(--line);border-radius:17px;background:rgba(22,27,34,.94);max-height:calc(100vh - 120px);overflow:auto}.stage-list h3{margin:4px 5px 8px;font-size:.9rem}.stage-button{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:11px;border:1px solid transparent;border-radius:11px;background:rgba(255,255,255,.025);color:var(--muted);text-align:left}.stage-button small{font:600 .68rem ui-monospace,monospace}.stage-button.active{border-color:rgba(124,140,255,.6);background:rgba(124,140,255,.16);color:var(--text)}.stage-detail{min-width:0;border:1px solid var(--line);border-radius:18px;background:rgba(22,27,34,.88);overflow:hidden}.selected-floor{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:17px 19px;border-bottom:1px solid var(--line)}.selected-floor span{color:var(--green);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.selected-floor h3{margin:4px 0 0;font-size:1.1rem}.selected-floor b{color:var(--muted);font:700 .74rem ui-monospace,monospace}.battle-sides{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.battle-side{min-width:0;padding:16px}.battle-side+.battle-side{border-left:1px solid var(--line)}.battle-side>header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding-bottom:13px}.battle-side>header span{color:#9eb8ff;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.battle-side>header h4{margin:4px 0 0;font-size:.86rem}.weaknesses{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px}.weakness-chip{padding:5px 7px}.weakness-chip img{width:16px;height:16px;object-fit:contain}.battle-level{margin:2px 0 11px;color:var(--muted);font-size:.75rem}.wave-list{display:grid;gap:11px}.wave-block{padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(8,11,16,.42)}.wave-block h5{margin:0 0 11px;color:#9eb8ff;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.wave-enemies{display:flex;flex-wrap:wrap;gap:9px}.wave-enemy{display:grid;grid-template-columns:72px minmax(0,1fr);grid-template-rows:auto auto 1fr;width:min(100%,235px);min-height:112px;padding:10px;border:1px solid rgba(255,255,255,.075);border-radius:13px;background:#10151d;color:var(--text)}.wave-portrait{position:relative;grid-row:1/4;width:66px;height:66px;align-self:start}.wave-portrait img{width:66px;height:66px;border:2px solid rgba(158,184,255,.34);border-radius:50%;background:#080b10;object-fit:cover}.wave-portrait b{position:absolute;right:-2px;bottom:-2px;display:grid;place-items:center;min-width:23px;height:23px;padding:0 4px;border-radius:999px;background:var(--accent);color:white;font-size:.68rem}.wave-enemy>strong{align-self:end;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.79rem}.wave-enemy>small{color:var(--muted);font-size:.68rem}.wave-enemy dl{grid-column:2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 8px;margin:7px 0 0}.wave-enemy dl div{display:flex;justify-content:space-between;gap:5px;font-size:.64rem}.wave-enemy dt{color:var(--muted)}.wave-enemy dd{margin:0;color:#b7e6ff;font-family:ui-monospace,monospace}.summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.summary-grid article{padding:17px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}.summary-grid span{color:var(--muted);font-size:.76rem}.summary-grid strong{display:block;margin-top:6px;font-size:1.35rem}.peak-card{display:grid;gap:10px}.peak-card>span{color:#9eb8ff;font:700 .7rem ui-monospace,monospace}.king-section{border-color:rgba(255,123,139,.25)}@media(max-width:1120px){.period-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.battle-sides{grid-template-columns:1fr}.battle-side+.battle-side{border-left:0;border-top:1px solid var(--line)}}@media(max-width:850px){.challenge-tabs{grid-template-columns:repeat(2,1fr)}.period-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.challenge-stage-shell{grid-template-columns:1fr}.stage-list{position:static;display:flex;overflow-x:auto;max-height:none}.stage-list h3{display:none}.stage-button{flex:0 0 135px}.buff-grid,.target-grid,.peak-grid{grid-template-columns:1fr}.challenge-hero{padding:28px}}@media(max-width:600px){.challenge-shell{width:min(100% - 20px,1420px);margin-top:18px}.challenge-hero{display:block;padding:23px 19px}.challenge-version{width:max-content;margin-top:18px;text-align:left}.challenge-tabs{display:flex;overflow-x:auto;scrollbar-width:none}.challenge-tab{flex:0 0 155px}.period-grid{grid-template-columns:1fr}.period-card{min-height:175px}.archive-heading,.period-detail-head{display:block}.archive-heading p{margin-top:10px}.detail-badges{margin-top:14px}.period-detail-head{padding:20px}.wave-enemy{width:100%}.selected-floor{align-items:flex-start}.battle-side{padding:12px}.battle-side>header{display:block}.weaknesses{justify-content:flex-start;margin-top:9px}}

.wave-block h5{display:flex;justify-content:space-between;gap:10px}.wave-block h5 em{color:var(--muted);font-style:normal;text-transform:none}.wave-enemy.multi-phase{width:min(100%,290px)}.wave-enemy .hp-stat{grid-column:1/-1;display:block}.wave-enemy .phase-hp{display:grid;gap:2px;margin-top:3px}.wave-enemy .phase-hp span{display:flex;justify-content:space-between;gap:7px;color:#b7e6ff;font-family:ui-monospace,monospace}.wave-enemy .phase-hp b{color:var(--amber)}.wave-enemy .phase-hp i{color:var(--muted);font-style:normal}

.wave-enemy-shell{display:grid;align-content:start}.wave-enemy-shell .wave-enemy{height:100%}.timeline-enemy-add{margin:6px 0 0;padding:6px 8px;border:1px solid rgba(45,212,191,.34);border-radius:8px;background:rgba(45,212,191,.08);color:var(--green);font-size:.67rem;font-weight:800}.timeline-enemy-add.added{border-color:rgba(124,140,255,.5);background:rgba(124,140,255,.12);color:#b8c2ff}
.invasion-card{display:grid;justify-items:start;gap:9px;margin:0 0 12px;padding:13px 14px;border:1px solid rgba(255,73,112,.25);border-radius:13px;background:linear-gradient(135deg,rgba(95,18,39,.2),rgba(22,27,34,.96) 62%);box-shadow:0 0 22px rgba(255,54,101,.06);overflow:hidden}.invasion-badge{position:relative;isolation:isolate;display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:5px 11px 5px 7px;border:1px solid rgba(255,77,113,.78);border-radius:4px;background:linear-gradient(90deg,rgba(103,13,38,.94),rgba(48,12,25,.84));box-shadow:0 0 14px rgba(255,45,92,.2);color:#ffdbe3;font-size:.72rem;font-weight:800;overflow:hidden}.invasion-badge b{color:#ff9daf;font-weight:800}.invasion-badge i{width:1px;height:13px;background:rgba(255,192,205,.35);transform:skew(-13deg)}.invasion-badge strong{font-weight:800;color:#fff}.invasion-badge em{color:#ff6f8f;font-style:normal;font:900 .82rem ui-monospace,monospace}.invasion-alert{display:grid;place-items:center;width:18px;height:18px;border:1px solid #ff8ca4;border-radius:50%;color:#ffd7df;font:900 .7rem/1 ui-monospace,monospace;box-shadow:inset 0 0 8px rgba(255,70,110,.28)}.invasion-card p{display:flex;flex-wrap:wrap;gap:7px;margin:0;font-size:.75rem}.invasion-card p span{color:var(--text)}.invasion-card small{color:var(--muted);font-size:.72rem;line-height:1.6;white-space:pre-line}

.challenge-pagination{display:flex;align-items:center;justify-content:center;gap:10px;margin:18px 0 4px}.challenge-pagination button{min-width:42px;height:36px;border:1px solid var(--line);border-radius:10px;color:var(--text);background:var(--panel-strong);font-weight:800}.challenge-pagination button:disabled{opacity:.35;cursor:not-allowed}.challenge-pagination span{min-width:76px;text-align:center;color:var(--muted);font:700 .68rem/1 ui-monospace,SFMono-Regular,Consolas,monospace}

/* Individual invasion state comes from StageInvasionConfig, not the wave. */
.wave-enemies{gap:12px;align-items:stretch}
.wave-enemy-shell{flex:1 1 255px;min-width:0;max-width:360px}
.wave-enemy-shell .wave-enemy,.wave-enemy-shell .wave-enemy.multi-phase{width:100%;grid-template-columns:76px minmax(0,1fr);grid-template-rows:auto auto auto;padding:14px;gap:4px 0;position:relative;isolation:isolate;overflow:hidden}
.peak-stage .wave-enemy-shell .wave-enemy{width:100%}
.wave-enemy .wave-portrait{grid-column:1;grid-row:auto / span 2}
.wave-enemy>strong{grid-column:2;white-space:normal;overflow-wrap:anywhere;font-size:16px;line-height:1.5}
.wave-enemy>small{grid-column:2;font-size:14px;line-height:1.5}
.wave-enemy dl{grid-column:1/-1;grid-template-columns:1fr;gap:6px;margin-top:10px}
.wave-enemy dl div{font-size:14px;line-height:1.5;gap:12px}
.wave-enemy dl .hp-stat{display:flex;flex-wrap:wrap}
.wave-enemy .phase-hp{width:100%}
.wave-enemy dd{font-size:15px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.wave-enemy .enemy-invasion-badge{grid-column:1/-1;display:flex;align-items:center;gap:7px;width:fit-content;margin-bottom:8px;padding:5px 10px;border:1px solid #f16883;border-radius:7px;background:#571b30;color:#ffe5eb;font-size:15px;line-height:1.4;font-weight:700;box-shadow:0 0 14px #ef416633}
.enemy-invasion-badge b{font-size:17px;color:white}
.is-invaded .wave-enemy{border-color:#c34865;background:repeating-linear-gradient(120deg,transparent 0 25px,#ff577514 26px 27px,transparent 28px 52px),linear-gradient(150deg,#3e192b,#171823 72%);box-shadow:inset 0 0 25px #b3224820}
.invasion-card{position:relative;isolation:isolate;background:repeating-linear-gradient(120deg,transparent 0 25px,#ff57750d 26px 27px,transparent 28px 52px),linear-gradient(135deg,rgba(95,18,39,.25),rgba(22,27,34,.96) 62%)}
/* A single highlight sweeps left to right, then rests between passes. */
.invasion-card::before,.invasion-badge::before,.is-invaded .wave-enemy::before{
  content:"";position:absolute;z-index:-1;top:-20%;bottom:-20%;left:-45%;width:35%;
  pointer-events:none;border:0;border-radius:0;opacity:0;
  background:linear-gradient(90deg,transparent,rgba(255,163,185,.08) 20%,rgba(255,240,246,.32) 50%,rgba(255,177,197,.1) 80%,transparent);
  transform:translate3d(0,0,0) skewX(-18deg);
  animation:invasion-sheen 4.8s ease-in-out infinite;
}
.wave-enemy dl .enemy-invasion-hp{display:grid;gap:4px;padding:9px 10px;border:1px solid #e968813b;border-radius:8px;background:#a6223d20}
.enemy-invasion-hp dt{color:#ffc2cd}.enemy-invasion-hp dd{color:#ffdce4;font-weight:700}.enemy-invasion-hp dd span{white-space:nowrap}
.invasion-hp-summary{display:inline-flex;flex-wrap:wrap;gap:4px 6px;padding:8px 11px;border:1px solid #ed7a9266;border-radius:6px;background:#701f374d;color:#ffe7ed;font-size:15px;line-height:1.6;font-weight:700}
.invasion-hp-summary b{color:#fff}
.additional-invasion-targets{margin:0 0 16px;padding:16px;border:1px solid #bd405e66;border-radius:12px;background:linear-gradient(135deg,#42142540,#17121b88)}
.additional-invasion-targets>h5{margin:0;color:#ffc3d0;font-size:16px;line-height:1.5}.additional-invasion-targets>p{margin:6px 0 13px;color:#bca3ad;font-size:14px;line-height:1.6}
.additional-invasion-targets .wave-enemy-shell{max-width:none}.additional-invasion-targets .wave-enemy dl>div:not(.enemy-invasion-hp){display:none}.additional-invasion-targets .wave-enemy dl{margin-top:4px}
.invasion-card{padding:18px;gap:12px}.invasion-badge{min-height:38px;font-size:15px;flex-wrap:wrap}.invasion-badge em{font-size:17px}.invasion-card p{font-size:16px}.invasion-card small{font-size:15px;line-height:1.8;color:#d7c4cb}
.battle-level,.wave-block h5,.battle-side>header span{font-size:14px}.battle-side>header h4,.stage-button,.stage-list h3{font-size:15px}.stage-button small{font-size:13px}
@keyframes invasion-sheen{
  0%{transform:translate3d(0,0,0) skewX(-18deg);opacity:0}
  5%{opacity:1}
  30%{transform:translate3d(430%,0,0) skewX(-18deg);opacity:1}
  31%,100%{transform:translate3d(430%,0,0) skewX(-18deg);opacity:0}
}
@media(max-width:600px){.wave-enemy-shell{flex-basis:100%;max-width:none}.invasion-card{padding:15px}.invasion-badge{font-size:14px}.invasion-card small{font-size:15px}.wave-block{padding:10px}}
@media(prefers-reduced-motion:reduce){.invasion-card::before,.invasion-badge::before,.is-invaded .wave-enemy::before{animation:none;opacity:0}}
