:root { font-size:17.6px; color-scheme:dark; font-family:Inter,"Segoe UI",Arial,sans-serif; color:#f0f2f3; --muted:#adb5c1; --gold:#ebc383; --mint:#8cdbce; --hp:#e6534c; --line:#ffffff22; --panel:#101722ed; }
* { box-sizing:border-box; }
body { margin:0; background:transparent; }
h1,h2,h3,p,ul,ol { margin:0; }
h1 { font-size:44px; line-height:1.15; }
h2 { font-size:35.2px; line-height:1.2; }
h3 { font-size:18.7px; font-weight:600; }
small,.muted { color:var(--muted); }
small { font-size:14.3px; }
#overlay { max-width:1920px; margin:auto; padding:34px 42px; }
.topbar { display:flex; align-items:center; justify-content:space-between; padding:0 0 22px; gap:20px; }
.brand { letter-spacing:.16em; font-size:18.7px; font-weight:750; }
.topbar>div { display:flex; gap:25px; align-items:center; font-size:15.4px; }
.event-time { font-variant-numeric:tabular-nums; }
.connection { color:var(--mint); font-size:13.2px; }
.connection::before { content:'●'; margin-right:7px; }
.test-label { color:var(--gold); font-size:12.1px; letter-spacing:.13em; }
.layout { display:grid; grid-template-columns:minmax(0,.88fr) minmax(0,1.12fr); gap:30px; }
.focus,.overview,.standby { background:var(--panel); border:1px solid var(--line); border-radius:16px; padding:28px; min-width:0; }
.focus { align-self:start; border-top:2px solid var(--gold); }
.eyebrow { font-size:13.2px; letter-spacing:.12em; color:var(--gold); font-weight:700; }
.focus-heading { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:26px; }
.focus-heading h1 { margin-top:7px; overflow-wrap:anywhere; }
.wallet { display:flex; align-items:center; gap:8px; color:var(--gold); white-space:nowrap; font-size:14.3px; }
.wallet strong { font-size:29.7px; font-variant-numeric:tabular-nums; }
svg { width:29px; height:29px; flex:none; }
.stage { padding:23px 0; border-block:1px solid var(--line); }
.stage-top,.fight-meta { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.reward { font-size:14.3px; color:var(--gold); }
.game-name { font-size:19.8px; color:var(--muted); margin:12px 0 5px; }
.game-name span { font-size:15.4px; }
.stage h2 { overflow-wrap:anywhere; }
.fight-meta { margin-top:17px; font-size:20.9px; }
.fight-meta time { font-variant-numeric:tabular-nums; }
.hp { margin-top:14px; font-size:13.2px; color:var(--muted); }
progress { display:block; width:100%; height:5px; margin-top:7px; appearance:none; border:0; accent-color:var(--hp); background:#ffffff16; }
progress::-webkit-progress-bar { background:#ffffff16; }
progress::-webkit-progress-value { background:var(--hp); }
progress::-moz-progress-bar { background:var(--hp); }
.special h2 { margin:12px 0 16px; }
.next-step { font-size:18.7px; margin-top:12px; line-height:1.5; }
.stage-detail { color:var(--gold); margin-top:14px; font-size:18.7px; }
.special small { display:block; margin-top:10px; }
.resources { display:flex; justify-content:space-between; align-items:center; gap:26px; margin-top:23px; }
.attempts { flex:1; max-width:440px; }
.attempt-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.attempt-heading strong { margin-left:9px; font-size:25.3px; }
.attempt-slots { display:flex; flex-wrap:wrap; gap:6px; margin-top:12px; }
.attempt-slot { width:calc((100% - 54px)/10); height:18px; background:#ffffff0a; border:1px solid #ffffff30; border-radius:3px; }
.attempt-slot.available { background:var(--mint); border-color:var(--mint); }
.attempt-slot.extra.available { background:var(--gold); border-color:var(--gold); }
.wipe { display:flex; flex-direction:column; align-items:center; gap:12px; font-size:14.3px; white-space:nowrap; }
.lamps { display:flex; gap:9px; }
.lamp { width:19px; height:19px; border-radius:50%; border:2px solid #ffffff40; }
.lamp.lit { background:var(--gold); border-color:var(--gold); box-shadow:0 0 10px #ebc38325; }
.quiet-stats { display:flex; justify-content:space-between; gap:16px; margin-top:13px; font-size:13.2px; color:var(--muted); }
.inventory { margin-top:25px; }
.inventory h3 { font-size:14.3px; color:var(--muted); margin-bottom:13px; }
.inventory ul { list-style:none; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:17px; }
.inventory li { display:flex; align-items:center; gap:12px; font-size:15.4px; }
.inventory li svg { color:var(--gold); width:34px; height:34px; }
.inventory li span,.inventory li small { display:block; margin-top:4px; font-size:13.2px; }
.inventory li small { font-size:12.1px; }
.challenges { display:flex; flex-wrap:wrap; gap:8px 20px; border-top:1px solid var(--line); padding-top:17px; margin-top:24px; font-size:14.3px; }
.challenge small { font-size:12.1px; }
.overview-heading { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:9px; }
.overview-heading h2 { font-size:24.2px; }
.overview-heading small { font-size:12.1px; }
.legend-current { color:var(--gold); margin:0 9px; }
.team-row { padding:18px 0; border-bottom:1px solid var(--line); }
.team-row:last-child { border:0; padding-bottom:0; }
.team-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.team-heading h3 { font-size:18.7px; overflow-wrap:anywhere; }
.team-heading>span { color:var(--muted); font-size:13.2px; text-align:right; }
.selected .team-heading h3 { color:var(--gold); }
.game-trail { display:flex; list-style:none; padding:0; margin-top:12px; gap:5px; }
.game-trail li { flex:1; min-width:0; display:flex; flex-direction:column; gap:5px; color:#b4bdc9; font-size:11px; position:relative; }
.game-trail li::before { content:''; position:absolute; left:22px; right:0; top:9px; height:1px; background:#ffffff22; }
.game-trail li:last-child::before { display:none; }
.trail-mark { width:20px; height:20px; border:1px solid #ffffff2a; border-radius:50%; display:grid; place-items:center; font-size:11px; }
.game-trail .done { color:var(--mint); }
.done .trail-mark { background:#8cdbce19; border-color:#8cdbce55; }
.game-trail .current { color:var(--gold); font-weight:650; }
.current .trail-mark { border-color:var(--gold); background:#ebc38318; }
.next .trail-mark { border-color:#c6cdd6; }
.order-unknown { font-size:13.2px; margin-top:12px; }
.standby { max-width:700px; }
.standby h1 { margin:15px 0; }
.standby p { color:var(--muted); }
.event-banner { display:flex; align-items:center; gap:20px; margin-top:22px; padding:19px 26px; border-left:4px solid var(--gold); background:var(--panel); border-radius:8px; max-width:1000px; animation:announce .35s ease-out; }
.event-banner strong { font-size:23.1px; }
.event-banner p { font-size:22px; margin-top:4px; }
.event-banner small { display:block; margin-top:6px; }
.event-banner svg { width:40px; height:40px; color:var(--gold); }
.team-row.event-highlight { animation:team-event 1.1s ease-out 2; }
.event-death .attempt-slot.available:last-of-type { animation:slot-loss 1s ease-out; }
.event-wipe .lamps { animation:team-event 1.1s ease-out 2; }
@keyframes announce { from { transform:translateY(12px); opacity:0; } to { transform:translateY(0); opacity:1; } }
@keyframes team-event { 0%,100% { background:transparent; } 35% { background:#ebc38323; } }
@keyframes slot-loss { from { background:#e7887e; } to { background:var(--mint); } }
@media(max-width:1250px) { #overlay { padding:22px; } .layout { grid-template-columns:1fr; gap:20px; } .focus { max-width:none; } .overview { padding:22px; } .teams { display:grid; grid-template-columns:1fr 1fr; column-gap:24px; } .team-row:nth-last-child(2) { border:0; } }
@media(max-width:650px) { #overlay { padding:12px; } .topbar { flex-wrap:wrap; gap:10px; padding-bottom:16px; } .topbar>div { gap:14px; } .brand { font-size:15.4px; } .focus,.overview { padding:18px; } .focus-heading { gap:12px; align-items:flex-start; } h1 { font-size:29.7px; } h2 { font-size:28.6px; } .wallet { gap:4px; font-size:12.1px; } .wallet strong { font-size:24.2px; } .wallet svg { width:22px; } .inventory ul { grid-template-columns:1fr; } .teams { grid-template-columns:1fr; } .team-row:nth-last-child(2) { border-bottom:1px solid var(--line); } .overview-heading { flex-wrap:wrap; } .resources { gap:18px; } .attempt-slot { height:15px; } .lamps { gap:5px; } .lamp { width:16px; height:16px; } .game-trail { gap:3px; } .game-trail li { font-size:9.9px; } .game-trail li span:last-child { overflow-wrap:anywhere; } .event-banner { padding:16px; } .event-banner strong,.event-banner p { font-size:18.7px; } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none!important; transition:none!important; } .team-row.event-highlight { border-left:3px solid var(--gold); padding-left:10px; } }
.settled { animation:none!important; }
.attempt-slot.just-lost { animation:lost-slot 1.4s ease-out forwards; }
@keyframes lost-slot { 0% { background:#e8998e; box-shadow:0 0 10px #e8998e80; transform:scale(1.12); } 100% { background:#ffffff0a; box-shadow:none; transform:scale(1); } }
.focus-column { min-width:0; }
.game-trail li { font-size:14.3px; }
.team-heading>span { font-size:15.4px; }
.team-row { padding:15px 0; }
.team-heading h3 { font-size:20.9px; }
.event-banner { gap:16px; padding:22px; }
.event-banner strong { font-size:29.7px; line-height:1.25; }
.event-banner p { font-size:22px; line-height:1.4; }
@media(max-width:650px) { .game-trail li { font-size:11px; } .team-heading>span { font-size:13.2px; } .team-heading h3 { font-size:18.7px; } .event-banner strong { font-size:24.2px; } .event-banner p { font-size:18.7px; } }
.event-effect { margin-top:14px; max-width:360px; }
.event-effect .wipe { flex-direction:row; justify-content:flex-start; }
.event-effect .attempt-heading h3 { font-size:15.4px; }
.event-effect .attempt-heading strong { font-size:18.7px; }
.event-effect .lamp { width:17px; height:17px; }
.team-status { display:flex; align-items:center; gap:12px; }
.phase-badge { padding:4px 8px; border-radius:5px; color:#b9e9e1; background:#8cdbce15; border:1px solid #8cdbce30; font-size:14.3px; }
.phase-badge.recovery { color:#ffdb92; background:#c58a242a; border-color:#edbe5d80; }
.phase-badge.restart { color:#f5b3aa; background:#a5493b24; border-color:#c8796980; }
.phase-badge.paused { color:#ede5ff; background:#9b81b82a; border-color:#baa4d780; }
@media(max-width:650px) { .team-status { gap:6px; flex-wrap:wrap; justify-content:flex-end; } .phase-badge { font-size:12.1px; padding:3px 5px; } }
.lamp.just-extinguished { animation:lamp-loss 1.3s ease-out; }
@keyframes lamp-loss { from { background:var(--gold); box-shadow:0 0 15px #ebc38380; } to { background:transparent; box-shadow:none; } }
/* One compact browser-source panel, centered on the left of a 1080p canvas. */
#overlay { width:600px; max-width:calc(100vw - 48px); margin:0; padding:0; position:absolute; left:28px; top:50vh; transform:translateY(-50%); }
.obs-panel { background:var(--panel); border:1px solid var(--line); border-top:2px solid var(--gold); border-radius:14px; padding:18px 20px; }
.panel-header { display:flex; justify-content:space-between; align-items:center; padding-bottom:12px; border-bottom:1px solid var(--line); gap:12px; }
.panel-header>div { display:flex; align-items:center; gap:10px; }
.panel-header strong { font-size:14.3px; letter-spacing:.1em; }
.panel-header time { font-size:14.3px; font-variant-numeric:tabular-nums; }
.panel-header .connection { font-size:11px; }
.panel-header .test-label { font-size:10.5px; }
.teams { display:block; }
.team-row { padding:10px 0; }
.team-heading { gap:8px; }
.team-heading h3 { display:flex; align-items:center; gap:9px; font-size:18.7px; color:#9fd8d2; text-shadow:0 0 10px #8cdbce1f; }
.own-label { font-size:10px; letter-spacing:.08em; white-space:nowrap; }
.phase-badge { font-size:12.1px; padding:3px 6px; white-space:nowrap; }
.team-game { display:flex; justify-content:space-between; gap:10px; margin-top:4px; font-size:13.2px; color:var(--muted); }
.team-game strong { color:#e1e6ee; font-weight:500; }
.team-game small { font-size:12px; white-space:nowrap; }
.team-bottom { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:4px; }
.mini-hp { display:flex; align-items:center; gap:8px; font-size:12.2px; color:var(--muted); width:65%; }
.mini-hp span { white-space:nowrap; }
.mini-hp progress,.hp-unknown { margin:0; height:4px; flex:1; min-width:20px; }
.hp-unknown { background:repeating-linear-gradient(135deg,#ffffff12,#ffffff12 3px,transparent 3px,transparent 6px); }
.next-game { font-size:12px; color:var(--muted); }
.own-summary { display:flex; gap:15px; flex-wrap:wrap; font-size:13.2px; color:var(--gold); margin-top:9px; }
.own-details { padding:10px 0 3px; }
.own-boss { font-size:13.2px; display:flex; justify-content:space-between; gap:10px; color:var(--muted); }
.resources { margin-top:10px; gap:25px; }
.attempt-heading h3 { font-size:13.2px; }.attempt-heading strong { font-size:17.6px; }.attempt-heading small { font-size:12px; }
.attempt-slots { margin-top:6px; gap:4px; }.attempt-slot { width:calc((100% - 36px)/10); height:10px; }
.wipe { flex-direction:row; gap:8px; font-size:12px; }.lamps { gap:5px; }.lamp { width:13px; height:13px; }
.inventory { margin-top:10px; }.inventory h3 { display:none; }.inventory ul { gap:8px; }.inventory li { gap:7px; font-size:13px; }.inventory li svg { width:23px; height:23px; }.inventory li span { font-size:12px; margin-top:2px; }.inventory li small { display:none; }
.challenges { padding:0; border:0; margin-top:10px; gap:8px; font-size:12.2px; }.challenge small { font-size:11.2px; }
.game-trail { margin-top:9px; }.game-trail li { font-size:11.8px; }.trail-mark { width:15px; height:15px; font-size:10.8px; }.game-trail li::before { top:7px; left:18px; }
.reward { margin-top:7px; font-size:12.1px; }.next-step { font-size:13.2px; margin-top:7px; }
.stage { padding:9px 0; margin-top:8px; }.stage h2 { font-size:23.1px; }.stage .stage-detail { font-size:13.2px; margin-top:8px; }.special small { font-size:12px; }.special h2 { margin:7px 0; }
.event-banner { margin-top:10px; padding:14px; border-radius:7px; gap:10px; background:#ebc3830d; }
.event-banner strong { font-size:22px; }.event-banner p { font-size:16.5px; }.event-banner svg { width:28px; height:28px; }.event-effect { margin-top:10px; }
@media(max-height:950px) and (min-width:701px) { #overlay { top:16px; transform:none; } }
@media(max-width:700px) { #overlay { position:relative; left:auto; top:auto; transform:none; width:auto; max-width:none; padding:12px; }.obs-panel { padding:14px; }.panel-header { flex-wrap:wrap; }.team-heading h3 { font-size:16.5px; }.team-game { font-size:12.1px; }.resources { gap:12px; }.game-trail li { font-size:9.9px; }.own-label { font-size:7.7px; }.own-summary { gap:10px; } }
@media(min-width:701px) and (max-height:950px) { #overlay { transform:scale(.9); transform-origin:top left; } }
@media(min-width:701px) and (max-height:800px) { #overlay { transform:scale(.75); transform-origin:top left; left:20px; } }
.team-meters { display:flex; align-items:center; gap:12px; flex:none; font-size:13.2px; font-variant-numeric:tabular-nums; }
.team-meters>span { display:flex; align-items:center; gap:4px; white-space:nowrap; }
.team-meters svg { width:16px; height:16px; }
.tiny-souls { color:var(--gold); }.tiny-deaths { color:#e8a49b; }.tiny-attempts { color:var(--mint); }
.team-meters .tiny-wipe { gap:3px; color:var(--gold); }
.tiny-lamp { width:7px; height:7px; border:1px solid #ebc38366; border-radius:50%; }.tiny-lamp.lit { background:var(--gold); border-color:var(--gold); }
.tiny-attempt-slots { display:grid; grid-template-columns:repeat(10,3px); gap:2px 1px; }
.tiny-slot { width:3px; height:8px; background:#8cdbce19; border-radius:1px; }.tiny-slot.available { background:var(--mint); }.tiny-slot.available.extra { background:var(--gold); }
.row-status { display:flex; align-items:center; gap:8px; }
.team-game { align-items:center; }.team-heading h3 { min-width:0; }
@media(max-width:700px) { .team-heading { flex-wrap:wrap; }.team-meters { gap:10px; font-size:12.1px; }.row-status { gap:5px; }.row-status small { font-size:9px; }.team-game { gap:5px; } }
#overlay { width:520px; }
.team-row { padding:7px 0; }
.game-boss-line { display:flex; align-items:center; gap:7px; min-width:0; flex:1; padding-left:7px; border-left:3px solid var(--gold); }
.current-game { max-width:170px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#f0f2f4; font-size:16.5px; font-weight:700; line-height:1.1; }
.boss-kills { display:inline-flex; align-items:center; gap:4px; color:var(--gold); white-space:nowrap; font-size:17.6px; line-height:1; }
.boss-kills strong { color:var(--gold); font-size:17.6px; font-weight:800; }
.boss-kills svg { width:16px; height:16px; }
.current-boss { min-width:0; flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.member-hps { display:grid; gap:3px; width:78%; min-width:0; }
.member-hps .mini-hp { display:flex; width:100%; gap:6px; font-size:11px; line-height:1.25; }
.member-name { width:110px; overflow:hidden; text-overflow:ellipsis; }
.member-hp-value { width:80px; font-size:11.5px; }
.member-hps .hp-unknown,.member-hps .hp-inactive { height:4px; flex:1; min-width:20px; }
.hp-inactive { background:#ffffff0b; }
.mini-hp.inactive { color:#88929e; }
.team-bottom { align-items:flex-start; }
.team-meters { gap:8px; }.team-heading h3 { gap:5px; }
.row-status>small { display:none; }
@media(min-width:701px) and (max-height:800px) { #overlay { transform:scale(.66); } }
@media(max-width:700px) { #overlay { width:auto; }.member-hps { width:100%; }.member-name { width:100px; }.team-bottom { flex-wrap:wrap; }.current-game { max-width:145px; font-size:15.4px; }.boss-kills,.boss-kills strong { font-size:16.5px; } }
.team-row { padding:2px 0; }
.own-details:has(.special) .own-boss { display:none; }
.own-details .special { padding:7px 0; }
.own-details .special h2 { font-size:19px; margin:4px 0; }
.own-details .special .next-step { font-size:13px; line-height:1.25; margin-top:4px; }
.own-details .special .stage-detail { margin-top:4px; }
.own-details .special small { margin-top:4px; }
.member-hps { width:100%; }
.member-name { width:88px; flex:none; }
.member-boss { width:135px; min-width:0; overflow:hidden; text-overflow:ellipsis; color:#bcc6d2; }
.member-hp-value { width:70px; flex:none; }
.own-fight-times { display:flex; justify-content:space-between; gap:12px; font-size:12px; color:var(--muted); }
.own-fight-times span { display:flex; gap:10px; }
.team-bottom:has(.member-hps) { flex-wrap:wrap; gap:3px; }
.team-bottom .next-game { margin-left:auto; }
@media(max-width:700px) { .member-name { width:78px; }.member-boss { width:95px; }.member-hp-value { width:66px; }.own-fight-times { flex-wrap:wrap; } }
.team-bottom:has(.member-hps) { position:relative; display:block; }
.member-hps { width:calc(100% - 58px); }
.member-boss { width:110px; }
.team-bottom .next-game { position:absolute; right:0; bottom:0; max-width:52px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
@media(max-width:700px) { .member-hps { width:100%; }.team-bottom .next-game { display:none; }.member-boss { width:95px; } }
/* Recovery repeats neither the locked bag nor the game already shown above. */
.own-details .special .stage-detail,.own-details .special small { display:none; }
.own-details .special h2 { display:inline; margin-left:10px; font-size:15px; }
.own-details:has(.special) .game-trail { display:none; }

.member-boss.active-boss { font-weight:700; color:#f0f2f3; }
.member-boss.next-boss { font-size:.95em; font-style:italic; font-weight:400; }

/* Personal team leads; next slot stays with progress rather than clipping HP rows. */
.game-boss-line .next-game{position:static;display:inline;max-width:none;overflow:visible;white-space:nowrap;flex:0 0 auto;font-size:12px;color:#c3b189}
.member-hps{width:100%}
.team-row.selected>.game-trail{margin:10px 0 0;padding-bottom:0;border-bottom:0}
.challenges{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;min-width:0}
.challenges>small{display:none}
.challenges .challenge{min-width:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px}

.team-row>.own-resources{margin:8px 0 12px;align-items:flex-start}
.own-resources>.wipe{min-height:22px;align-items:center}

/* Player-specific choices and compact item legend. */
.member-track{min-width:0}.member-challenges{display:flex;gap:6px;margin:4px 0 8px;padding-left:4px;flex-wrap:wrap}.member-challenges .challenge{font-size:12px;padding:3px 8px;border:1px solid #bda26b44;border-radius:4px;background:#bda26b12}.member-challenges .pending{opacity:.65}.inventory ul{display:flex;gap:8px;flex-wrap:wrap}.inventory li{display:flex;align-items:center;gap:5px;padding:5px 8px}.inventory li svg{width:24px;height:24px}.overlay-legend{display:flex;gap:7px 12px;flex-wrap:wrap;padding:10px 14px;border-top:1px solid #bda26b33;color:#b9b6ae;font-size:11px;line-height:1.4}.overlay-legend span{display:flex;align-items:center;gap:5px}.overlay-legend svg{width:16px;height:16px;flex-shrink:0;color:#d7b876}
/* Separate team cards, including the final row and compact viewports. */
.obs-panel .teams{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding:12px 0}
.obs-panel .teams>.team-row{margin:0;padding:10px;border:1px solid #8cdbce40;border-left:3px solid #8cdbce88;border-radius:7px;background:#ffffff04;min-width:0}
.obs-panel .teams>.team-row.selected{border-color:#ebc38370;border-left-color:var(--gold);background:#ebc38308;box-shadow:inset 0 1px 0 #ebc38314}
.obs-panel .team-heading{padding-bottom:6px;margin-bottom:6px;border-bottom:1px solid #ffffff14}

.own-details:has(>.own-fight-times:only-child:empty){display:none}

.game-boss-line>.current-game,.game-boss-line>.boss-kills,.game-boss-line>.next-game{line-height:22px}
.game-boss-line>.boss-kills strong{line-height:22px}
.game-boss-line>.boss-kills svg{display:block;flex-shrink:0}

.team-heading h3{flex-wrap:wrap}.team-event-progress{font-size:12px;font-weight:600;line-height:1.4;white-space:nowrap;color:#cbd4dc;padding:2px 6px;border:1px solid #8cdbce35;border-radius:4px;text-shadow:none}.selected .team-event-progress{color:var(--gold);border-color:#ebc38340}
/* Readable player rows with consistent columns and stronger HP tracks. */
.member-hps{gap:6px}
.member-hps .mini-hp{display:grid;grid-template-columns:minmax(76px,.9fr) minmax(90px,1.25fr) 96px minmax(48px,1fr);gap:6px;align-items:center;font-size:13.2px;line-height:1.4}
.member-hps .member-name,.member-hps .member-boss,.member-hps .member-hp-value{width:auto;min-width:0}

/* Only the bound team stays fixed; dots and a live timer announce rotating pages. */
.page-switcher{display:grid;gap:6px;padding:9px 14px 0;border-top:1px solid #bda26b33}
.page-dots{display:flex;justify-content:center;align-items:center;gap:7px;height:8px}
.page-dot{width:6px;height:6px;border:1px solid #d7b87688;border-radius:50%;background:transparent;box-shadow:0 0 0 1px #0003}
.page-dot.active{background:var(--gold);border-color:var(--gold);box-shadow:0 0 7px #ebc38388}
.page-switch-progress{--page-duration:20000ms;--page-elapsed:0ms;position:relative;width:100%;height:3px;margin:0;border-radius:2px;overflow:hidden;background:#ffffff12}
.page-switch-progress::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#9bcfc7,var(--gold));transform:scaleX(0);transform-origin:left center;animation:page-switch-fill var(--page-duration) linear infinite;animation-delay:calc(0ms - var(--page-elapsed));will-change:transform}
@keyframes page-switch-fill{to{transform:scaleX(1)}}
.member-hps .member-name{font-weight:600;color:#dce2e8}
.member-hps .member-boss.next-boss{font-size:13px;color:#cbd4de}
.member-hps .member-hp-value{font-size:12.5px;color:#c5cdd7;font-variant-numeric:tabular-nums}
.member-hps .mini-hp progress,.member-hps .hp-unknown,.member-hps .hp-inactive{width:100%;min-width:0;height:7px;border-radius:3px;overflow:hidden}
@media(max-width:420px){.member-hps .mini-hp{grid-template-columns:64px minmax(70px,1fr) 84px minmax(32px,.7fr);gap:4px;font-size:12.5px}.member-hps .member-boss.next-boss{font-size:12.5px}.member-hps .member-hp-value{font-size:11.5px}}

.preview-shop-items{display:flex;align-items:center;gap:9px;margin:4px 0 8px}.preview-shop-items>small{font-size:9px;letter-spacing:.08em;color:var(--muted)}.preview-shop-item{display:inline-flex;align-items:center;gap:5px;padding:3px 7px;border:1px solid #ebc38340;border-radius:5px;color:var(--gold);font-size:13px}.preview-shop-item svg{width:22px;height:22px}

.charged-star{position:relative;display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;flex:none}.charged-star svg,.inventory li .charged-star svg,.preview-shop-item .charged-star svg{width:32px;height:32px;fill:#302b20}.charged-star b{position:absolute;font-size:12px;line-height:1;color:#fff0c9;text-shadow:0 1px 2px #000}.preview-shop-item{position:relative}.item-burst{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;color:var(--gold)}.item-burst svg{width:30px;height:30px;animation:item-pop .7s ease-out forwards}.item-burst i{position:absolute;left:50%;top:50%;width:4px;height:4px;border-radius:50%;background:var(--gold);--dx:0px;--dy:-26px;animation:item-fragment .8s ease-out forwards}.item-burst i:nth-of-type(2){--dx:24px;--dy:-14px}.item-burst i:nth-of-type(3){--dx:24px;--dy:14px}.item-burst i:nth-of-type(4){--dx:0px;--dy:26px}.item-burst i:nth-of-type(5){--dx:-24px;--dy:14px}.item-burst i:nth-of-type(6){--dx:-24px;--dy:-14px}.used-item-effect{position:relative;display:flex;align-items:center;gap:8px;min-height:34px;font-size:13px;color:var(--gold)}.used-item-effect>.item-burst{position:relative;width:34px;height:34px;flex:none}.used-item-effect>svg{width:30px;height:30px}@keyframes item-pop{0%{transform:scale(.8);opacity:1}30%{transform:scale(1.4);filter:drop-shadow(0 0 6px #ebc383)}100%{transform:scale(1.8);opacity:0}}@keyframes item-fragment{0%{transform:translate(-50%,-50%) scale(.3);opacity:0}15%{opacity:1}100%{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.2);opacity:0}}@media(prefers-reduced-motion:reduce){.item-burst{display:none}}
/* Center the charge count inside the star with an outlined numeral. */
.charged-star b{top:50%;left:50%;transform:translate(-50%,-50%) translateY(1px);font-size:14px;font-weight:800;line-height:1;color:#fff0c9;-webkit-text-stroke:1px #000;paint-order:stroke fill;text-shadow:0 1px 1px #000}
/* Uniform item slots, independent of symbol and charge count. */
.preview-shop-item,.inventory li{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:5px;width:70px;height:44px;min-width:70px;padding:5px 7px;box-sizing:border-box;flex:none;border:1px solid #ebc38340;border-radius:5px;color:var(--gold)}
.preview-shop-item>svg,.inventory li>svg{width:26px;height:26px;flex:none}
.preview-shop-item>strong,.inventory li>strong{font-size:13px;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}

.boss-phase{flex:none;color:var(--gold);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}

/* Keep phase and the compact HP bar together in the fourth grid column. */
.member-hp-bar{display:flex;align-items:center;gap:5px;min-width:0;width:100%;max-width:100px;justify-self:end}
.member-hps .member-hp-bar progress,.member-hps .member-hp-bar .hp-unknown,.member-hps .member-hp-bar .hp-inactive{flex:1;width:0;min-width:0;height:6px}
