/* Shared, self-contained Boss Fight dialogs. */
body.bf-dialog-open { overflow:hidden; }
.bf-dialog {
 --bf-accent:#d4b77c; --bf-muted:#a7b4c6; --bf-phys:#fa8273; --bf-magic:#73b7ff;
 position:fixed; inset:0; width:min(1140px,calc(100vw - 48px)); max-width:none; max-height:calc(100dvh - 48px); margin:auto; padding:0;
 color:#f1f0ec; border:1px solid color-mix(in srgb,var(--bf-accent) 45%,#263344); border-radius:12px;
 background:radial-gradient(ellipse at 0 0,color-mix(in srgb,var(--bf-accent) 8%,transparent),transparent 60%),#0d1622;
 box-shadow:0 32px 120px #000c,0 0 80px color-mix(in srgb,var(--bf-accent) 10%,transparent);
 font:400 14px/1.5 "Outfit",system-ui,sans-serif; overflow:auto; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:#495361 #0d1622;
 animation:bf-dialog-enter .3s ease-out;
}
.bf-dialog * { box-sizing:border-box; }
.bf-dialog::backdrop { background:#02060de0; backdrop-filter:blur(12px); }
.bf-dialog :is(button,a):focus-visible { outline:2px solid #f1d5a2; outline-offset:3px; }
.bf-dialog button { cursor:pointer; font-family:inherit; }
.bf-dialog button:disabled { cursor:wait; opacity:.6; }
.bf-dialog-close { position:absolute; top:22px; right:22px; z-index:5; display:grid; place-items:center; width:38px; height:38px; padding:0; color:#ccd5e0; font-size:26px; line-height:1; background:#ffffff06; border:1px solid #ffffff20; border-radius:6px; }
.bf-dialog-close:hover { color:#fff; background:#ffffff12; border-color:#d4b77c88; }
.bf-dialog-heading { padding:28px 80px 24px 32px; border-bottom:1px solid #ffffff12; }
.bf-dialog-eyebrow { display:block; color:#b5a78d; font-size:10px; letter-spacing:.16em; line-height:1.5; font-weight:500; }
.bf-dialog-heading h2 { margin:8px 0 0; font:400 clamp(30px,3vw,44px)/1.15 "AOW",Georgia,serif; letter-spacing:.02em; }
.bf-dialog-actions { display:flex; align-items:center; justify-content:flex-end; gap:16px; padding:22px 32px; background:#080f1880; border-top:1px solid #ffffff12; }
.bf-dialog-actions p { margin:0 auto 0 0; color:var(--bf-muted); max-width:52ch; font-size:12px; }
.bf-dialog .bf-btn { display:inline-flex; justify-content:center; align-items:center; gap:24px; padding:14px 22px; min-height:46px; border:1px solid #ffffff20; border-radius:5px; font:600 13px/1.4 "Outfit",system-ui,sans-serif; white-space:normal; }
.bf-dialog .bf-btn-primary { color:#261b0c; border-color:#e6c990; background:linear-gradient(115deg,#f1d6a5,#c29a60); }
.bf-dialog .bf-btn-ghost { color:#cdd6e3; background:#ffffff05; }
.bf-report-heading { display:flex; justify-content:space-between; align-items:center; gap:24px; }
.bf-report.is-won h2 { color:#f0d39b; }
.bf-report-badge { padding:8px 14px; color:var(--bf-accent); background:color-mix(in srgb,var(--bf-accent) 7%,transparent); border:1px solid color-mix(in srgb,var(--bf-accent) 25%,transparent); border-radius:4px; font-size:12px; }
.bf-report-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.2fr); }
.bf-report-overview { background:#080f1866; border-right:1px solid #ffffff10; min-width:0; }
.bf-report-art { position:relative; isolation:isolate; overflow:hidden; }
.bf-report-art>img { display:block; width:100%; height:auto; aspect-ratio:3/2; object-fit:contain; }
.bf-report-art::after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(0deg,#0a121d,transparent 24%); }
.bf-report-art .bf-result-fx { z-index:1; }
.bf-report-score { padding:8px 28px 26px; }
.bf-report-score-label { display:flex; gap:12px; align-items:center; justify-content:space-between; }
.bf-report-record { color:#8de1bc; border:1px solid #8de1bc40; background:#8de1bc0a; font-size:10px; padding:3px 8px; border-radius:3px; text-transform:uppercase; letter-spacing:.07em; }
.bf-report-score>strong { display:block; margin:8px 0 12px; color:#f4deaf; font-size:clamp(40px,4vw,64px); letter-spacing:-.04em; line-height:1.1; font-weight:600; font-variant-numeric:tabular-nums; }
.bf-report-health { display:flex; justify-content:space-between; gap:12px; font-size:11px; color:var(--bf-muted); }
.bf-report-health-bar { height:4px; margin-top:12px; background:#ffffff0d; border-radius:2px; overflow:hidden; }
.bf-report-health-bar i { display:block; height:100%; background:linear-gradient(90deg,var(--bf-accent),#ffe2ab); box-shadow:0 0 12px var(--bf-accent); }
.bf-report-team { padding:26px 30px; min-width:0; }
.bf-report-section-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:18px; }
.bf-report-section-heading h3 { margin:0; font:400 21px/1.3 "AOW",Georgia,serif; }
.bf-report-section-heading>span { color:#8999af; font-size:9px; letter-spacing:.1em; white-space:nowrap; }
.bf-report-team ul { list-style:none; margin:0; padding:0; display:grid; gap:16px; }
.bf-report-row { display:grid; grid-template-columns:42px minmax(0,1fr); gap:12px; align-items:center; }
.bf-report-row>img { width:42px; height:42px; object-fit:cover; border-radius:8px; border:1px solid #ccb37e50; }
.bf-report-row-title { display:flex; justify-content:space-between; gap:12px; font-size:13px; }
.bf-report-row-title strong { color:#eee5d2; font-weight:600; font-variant-numeric:tabular-nums; }
.bf-report-bar { display:flex; height:5px; background:#ffffff08; overflow:hidden; border-radius:2px; margin:6px 0; }
.bf-report-bar i.phys { background:var(--bf-phys); } .bf-report-bar i.magic { background:var(--bf-magic); }
.bf-report-values { display:flex; flex-wrap:wrap; gap:5px 16px; font-size:10px; color:#99a9be; }
.bf-report-values b { margin-left:4px; font-weight:500; font-variant-numeric:tabular-nums; }
.bf-report-values .phys b { color:var(--bf-phys); } .bf-report-values .magic b { color:var(--bf-magic); }
.bf-report-progression { display:flex; align-items:center; gap:20px; margin-top:22px; padding-top:20px; border-top:1px solid #ffffff12; }
.bf-report-progression strong { display:block; margin-top:7px; color:#e5cc98; font-size:19px; font-weight:500; }
.bf-report-progression strong span { margin:0 10px; color:var(--bf-accent); }
.bf-report-progression>span { margin-left:auto; max-width:19ch; color:var(--bf-muted); font-size:12px; }
.bf-report-reward-section { padding:24px 32px; border-top:1px solid #ffffff12; }
.bf-dialog-loot-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.bf-dialog-loot { display:flex; align-items:center; gap:12px; padding:16px 12px; border:1px solid #cdb48228; border-radius:6px; background:linear-gradient(135deg,#b9a16e0c,#ffffff02); }
.bf-dialog-loot>img { width:40px; height:40px; object-fit:contain; }
.bf-dialog-loot strong,.bf-dialog-loot span,.bf-dialog-loot small { display:block; }
.bf-dialog-loot strong { font-size:22px; font-weight:600; color:#f0d9aa; line-height:1.2; }
.bf-dialog-loot span { color:#bbc5d3; font-size:11px; margin-top:4px; }
.bf-dialog-loot small { color:#8999ae; font-size:10px; margin-top:4px; }
.bf-report-empty { grid-column:1/-1; color:var(--bf-muted); font-size:13px; margin:0; padding:12px 0; }
.bf-report .bf-result-warning { margin:16px 0 0; }
.bf-confirm { width:min(520px,calc(100vw - 32px)); }
.bf-confirm .bf-dialog-heading h2 { font-size:29px; }
.bf-confirm-body { padding:24px 32px; }
.bf-confirm-product { text-align:center; padding:10px 0 18px; }
.bf-confirm-product>img { width:90px; height:90px; object-fit:contain; filter:drop-shadow(0 0 22px #d5b77730); }
.bf-confirm-product.is-skin { padding-top:0; }
.bf-confirm-product.is-skin>img { width:100%; height:auto; max-height:250px; object-fit:contain; border-radius:5px; }
.bf-confirm-product p { color:var(--bf-muted); font-size:13px; margin:14px 0 0; }
.bf-confirm-price { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:18px 0; border-block:1px solid #ffffff12; }
.bf-confirm-price>span { color:var(--bf-muted); font-size:12px; }
.bf-confirm-price strong { display:flex; align-items:center; gap:8px; font-size:24px; color:#f0d9aa; font-weight:500; }
.bf-confirm-price img { width:30px; height:30px; object-fit:contain; }
.bf-confirm-price small { font-size:10px; color:var(--bf-muted); }
.bf-confirm-balance { display:grid; gap:8px; padding-top:16px; color:#99a9bd; font-size:12px; }
.bf-confirm-balance>span { display:flex; justify-content:space-between; gap:16px; }
.bf-confirm-balance b { color:#d2dae5; font-weight:500; }
@keyframes bf-dialog-enter { from { opacity:0; transform:translateY(12px) scale(.99); } to { opacity:1; transform:none; } }
@media (max-width:760px) {
 .bf-dialog { width:calc(100vw - 24px); max-height:calc(100dvh - 24px); border-radius:9px; }
 .bf-dialog-heading { padding:24px 64px 20px 22px; }
 .bf-dialog-close { top:18px; right:16px; width:34px; height:34px; }
 .bf-report-heading { align-items:flex-start; flex-direction:column; gap:12px; }
 .bf-report-grid { grid-template-columns:1fr; }
 .bf-report-overview { border-right:0; border-bottom:1px solid #ffffff12; }
 .bf-report-art>img { max-height:320px; }
 .bf-report-score { padding:16px 22px 24px; }
 .bf-report-team { padding:24px 22px; }
 .bf-report-score>strong { font-size:48px; }
 .bf-report-reward-section { padding:24px 22px; }
 .bf-dialog-loot-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .bf-dialog-actions { padding:20px 22px; flex-wrap:wrap; }
 .bf-dialog-actions p { flex:1 0 100%; max-width:none; }
 .bf-dialog-actions .bf-btn-primary { flex:1; }
 .bf-report .bf-dialog-actions .bf-btn-primary { width:100%; }
 .bf-report-section-heading { gap:10px; flex-wrap:wrap; }
 .bf-report-section-heading h3 { font-size:20px; }
 .bf-confirm-body { padding:20px 22px; }
 .bf-confirm-price strong { flex-wrap:wrap; justify-content:flex-end; gap:6px; }
 .bf-confirm-price small { flex-basis:100%; text-align:right; }
}
@media (max-width:380px) { .bf-dialog-loot { gap:8px; padding:12px 8px; } .bf-dialog-loot>img { width:28px; height:28px; } .bf-dialog-loot strong { font-size:19px; } .bf-report-progression { flex-wrap:wrap; } .bf-report-progression>span { max-width:none; margin:0; } }
@media (prefers-reduced-motion:reduce) { .bf-dialog,.bf-dialog *,.bf-dialog *::before,.bf-dialog *::after { animation:none!important; transition:none!important; } }
body.bf-vfx-paused .bf-dialog *,body.bf-vfx-suspended .bf-dialog * { animation-play-state:paused!important; }
