@import url('data:text/css,');
:root{color-scheme:dark;--bg:#141714;--panel:#1c201c;--line:#343a31;--text:#e4e5d9;--muted:#9bA18f;--accent:#d8ec80}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px 'Segoe UI',sans-serif}button,input,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:#272d24;color:var(--text);border-radius:5px;padding:10px 13px;transition:.15s}button:hover{background:#394331;border-color:#8c9d65}button:disabled{opacity:.4;cursor:default}button:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}header{height:76px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:35px;padding:0 4%}.brand{font-size:25px;font-weight:900;letter-spacing:1px;text-decoration:none;color:var(--text)}.brand>span:last-child{color:var(--accent)}.logo{display:inline-block;color:var(--accent);font-size:32px;margin-right:12px}.edition,.badge,.eyebrow,.stamp,.arena-bar,.setup-foot,.live-label,footer{font-family:Consolas,monospace}.edition{color:var(--muted);font-size:10px;letter-spacing:1.4px}.badge{margin-left:auto;font-size:11px;border:1px solid var(--line);padding:9px 12px;color:#bfc7af}i{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;margin:0 7px}main{max-width:1600px;margin:auto;padding:36px 4% 20px}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:29px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--accent)}h1{font-size:48px;letter-spacing:-2px;margin:10px 0 7px;font-weight:800}.muted{color:var(--muted);font-size:13px;line-height:1.6;margin:8px 0}.stamp{border-left:2px solid #66734d;padding:0 20px;color:#6f7c5a;line-height:1.4;letter-spacing:3px;font-size:18px}.stamp b{color:var(--accent)}.layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:22px;align-items:start}.panel{background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:20px}.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:19px}.section-title h2{font-size:14px;margin:0;font-weight:600}.section-title>span{font:11px Consolas,monospace;color:var(--muted)}label{display:block;font-size:12px;margin:21px 0 10px;color:#c7cebc}label span{float:right;color:var(--muted)}textarea{width:100%;height:213px;resize:vertical;background:#131712;border:1px solid #3a4233;border-radius:4px;color:var(--text);padding:13px 15px;line-height:1.6;font-size:14px}.small-row{font-size:10px;display:flex;justify-content:space-between;align-items:center;color:var(--muted);margin-top:8px}.text-button{font-size:10px;border:0;background:none;padding:0;color:var(--accent)}.segmented{display:flex;gap:5px}.segmented button{flex:1;font-size:11px;padding:11px 5px}.segmented .active{background:#d8ec801c;color:var(--accent);border-color:#85934e}.check{display:flex;align-items:center;gap:8px;margin-top:25px}.check input{accent-color:var(--accent)}.check span{margin-left:auto;color:var(--accent)}.hint{font-size:11px;color:var(--muted);line-height:1.8;margin:0 0 23px}.primary{background:var(--accent);color:#202618;border:0;font-weight:800;letter-spacing:1px;padding:16px 20px;width:100%}.primary:hover{background:#e9ffa0}.setup-foot{font-size:10px;color:#9ba98d;text-align:center;border-top:1px solid var(--line);padding-top:19px;margin-top:20px}#error{color:#ffa99a;font-size:12px}.battle{min-width:0}.arena-bar{border:1px solid var(--line);border-bottom:0;border-radius:7px 7px 0 0;background:#22271f;padding:15px 16px;display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:1px}.map-name{border-left:1px solid #515944;margin-left:15px;padding-left:15px;color:var(--muted)}.stats{display:flex;gap:20px;color:var(--muted)}.stats b{color:var(--accent);font-size:15px;margin-left:6px}.canvas-wrap{position:relative;background:#3b4830;overflow:hidden}canvas{width:100%;display:block;aspect-ratio:11/7}.overlay{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;background:#10170fc7;backdrop-filter:blur(2px);padding:20px}.overlay h2{font-size:clamp(24px,3vw,43px);line-height:1.2;margin:12px 0}.overlay p{color:#b4bea6}.overlay .eyebrow{color:var(--accent)}.overlay .primary{width:auto;margin-top:16px}.crosshair{font-size:65px;color:var(--accent);margin-bottom:20px}.hidden{display:none!important}.arena-footer{display:flex;justify-content:space-between;align-items:center;background:#20261d;border:1px solid var(--line);border-radius:0 0 7px 7px;padding:9px 14px;color:var(--muted);font-size:10px}.arena-footer button{padding:7px 10px;font-size:11px;margin-left:5px}.legend-yellow{color:#eacb69}.under{display:grid;grid-template-columns:1.15fr 1fr;gap:15px;margin-top:18px}.roster,.feed{height:190px;overflow:auto;scrollbar-width:thin;scrollbar-color:#526043 transparent}.duck-row{display:grid;grid-template-columns:12px minmax(55px,1fr) 100px 45px;align-items:center;gap:8px;font-size:11px;padding:9px 0;border-bottom:1px solid #30362c}.duck-row b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.duck-row small{color:var(--muted);font-size:9px}.duck-row.dead{opacity:.35}.hp{height:3px;background:#333b2f;margin-top:5px}.hp div{height:100%;background:var(--accent)}.feed p{font-size:11px;line-height:1.7;border-bottom:1px solid #30362c;padding:6px 0;margin:0;color:#b9c2ac}.feed time{color:#6f805f;margin-right:10px}#announcement{position:absolute;top:18px;left:50%;transform:translateX(-50%);color:#172012;background:var(--accent);padding:10px 20px;border-radius:3px;font-size:12px;display:none;white-space:nowrap}.handbook{margin-top:22px}summary{cursor:pointer;font-size:13px}summary span{float:right;color:var(--muted);font-size:11px}#catalog{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:20px 0}.item-card{border:1px solid #424a39;background:repeating-linear-gradient(0deg,transparent,transparent 23px,#ffffff04 24px),repeating-linear-gradient(90deg,#252c21,#252c21 23px,#ffffff09 24px);padding:12px}.item-card svg{width:100%;height:50px}.item-card b{display:block;font-size:12px}.item-card p{font-size:11px;color:var(--muted);margin-bottom:0}footer{display:flex;justify-content:space-between;font-size:10px;color:#74806a;padding:24px 0}@media(max-width:1000px){.layout{grid-template-columns:240px minmax(0,1fr)}.under{grid-template-columns:1fr}.map-name,.edition{display:none}main{padding:24px}.stamp{display:none}}@media(max-width:700px){header{padding:0 20px}.badge{font-size:9px}.layout{grid-template-columns:1fr}.setup textarea{height:115px}.setup{padding:16px}.heading{margin-bottom:22px}h1{font-size:38px}.under{grid-template-columns:1fr}.arena-footer{flex-wrap:wrap;gap:8px}summary span{display:none}footer{gap:20px}.overlay h2{font-size:26px}}

.stream-setup{border-top:1px solid var(--line);margin-top:18px}.stream-setup button{font-size:11px;margin-bottom:10px}.stream-setup input{width:100%;background:#131712;color:var(--text);border:1px solid var(--line);padding:9px;margin-bottom:9px;font-size:11px}#stream-status{display:none}
html.stream-mode,html.stream-mode body{background:transparent!important;color-scheme:normal;margin:0;width:100%;height:100%;overflow:hidden}.stream-mode header,.stream-mode .heading,.stream-mode .setup,.stream-mode .arena-bar,.stream-mode .arena-footer,.stream-mode .under,.stream-mode .handbook,.stream-mode footer,.stream-mode .overlay,.stream-mode #announcement{display:none!important}.stream-mode main,.stream-mode .layout,.stream-mode .battle{display:contents}.stream-mode .canvas-wrap{position:fixed;bottom:0;left:0;width:100vw;height:calc(100vw / 6);max-height:100vh;background:transparent;overflow:visible}.stream-mode canvas{width:100%;height:100%;aspect-ratio:6;object-fit:contain;object-position:bottom}.stream-mode #stream-status{display:block;position:absolute;top:0;left:50%;transform:translateX(-50%);max-width:90%;padding:6px 14px;border-radius:4px;background:#172014c9;color:#e1edb5;font:bold clamp(10px,1vw,17px) 'Segoe UI',sans-serif;text-align:center;text-shadow:0 1px 2px #000;white-space:nowrap}

#arena{image-rendering:pixelated}.item-card svg{shape-rendering:crispEdges}

.astra-panel{padding:14px;background:#163033;border:1px solid #6fbfc2;color:#e6f5d8;margin-bottom:12px;line-height:1.7}.astra-panel small{color:#a9c8bd}.astra-mode .setup,.astra-mode .heading,.astra-mode .handbook,.astra-mode footer{display:none}.astra-mode .layout{display:block}.astra-mode main{max-width:1450px;margin:auto;padding:16px}.astra-mode .canvas-wrap{max-width:1100px;margin:auto}.astra-mode .under{display:none}

/* Live standings and the winner card share data in page and OBS layouts. */
.roster{height:300px}.score-table{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:16px;font-variant-numeric:tabular-nums}.score-table caption{text-align:left;padding:10px 7px;color:var(--accent);font-weight:700}.score-table th{color:var(--muted);font-size:10px;font-weight:500;background:#252c22;position:sticky;top:0}.score-table th,.score-table td{padding:8px 6px;text-align:right;border-bottom:1px solid #343d30;white-space:nowrap}.score-table th:nth-child(2),.score-table td:nth-child(2){text-align:left}.score-table .score-name{max-width:170px;overflow:hidden;text-overflow:ellipsis;font-weight:600}.score-kills{font-weight:800;color:#e9ecc9}.score-hp{color:#cde780}.score-table .eliminated{color:#8b9584}.score-table .eliminated .score-hp{color:#a37870}.score-table.blue caption{color:#89b8d2}.score-table.boss caption{color:#ee9c7c}.score-table .score-page{caption-side:bottom;font-size:10px;padding:4px 6px;color:#a7b69a}
#winner-duck{width:clamp(140px,20vw,260px);height:auto;aspect-ratio:30/23;image-rendering:pixelated}#result h2{max-width:90%;overflow-wrap:anywhere;color:#e7efb9}#result-detail{max-width:90%;line-height:1.5;overflow-wrap:anywhere}#stream-scoreboard{display:none}
.stream-mode #stream-scoreboard{display:flex;gap:8px;position:absolute;left:12px;bottom:calc(100% + 8px);max-width:calc(100vw - 24px);align-items:flex-start;pointer-events:none}.stream-mode .score-table{width:260px;max-width:31vw;background:#172014df;border:1px solid #516245;border-radius:4px;margin:0;font-size:12px}.stream-mode .score-table th,.stream-mode .score-table td{padding:4px 6px}.stream-mode .score-table .score-name{max-width:120px}.stream-mode .score-table caption{background:#172014df;padding:6px;font-size:11px}.stream-mode #result:not(.hidden){display:grid!important;grid-template-columns:190px minmax(180px,1fr);grid-template-rows:auto auto auto;align-content:center;justify-items:center;inset:8px max(20px,20vw);background:#172014ed;border:2px solid #a7bd6b;border-radius:10px;backdrop-filter:none;padding:14px;gap:4px 15px}.stream-mode #winner-duck{grid-column:1;grid-row:1/4;width:180px}.stream-mode #result .eyebrow,.stream-mode #winner,.stream-mode #result-detail{grid-column:2;margin:4px}.stream-mode #winner{font-size:clamp(20px,2vw,38px)}.stream-mode #result-detail{font-size:clamp(11px,1vw,16px)}.stream-mode #again{display:none}.astra-mode .under{display:grid}
@media(max-width:700px){.score-table{font-size:11px}.score-table th,.score-table td{padding:6px 4px}.stream-mode #result:not(.hidden){inset:0 8px;grid-template-columns:100px 1fr}.stream-mode #winner-duck{width:100px}.stream-mode .score-table{font-size:9px}.stream-mode .score-table th{font-size:8px}.stream-mode .score-table th,.stream-mode .score-table td{padding:2px}.stream-mode .score-table .score-name{max-width:65px}}

/* Standings at the top; the battle stays at the bottom in OBS. */
#sky{position:fixed;inset:0;width:100vw;height:100vh;aspect-ratio:auto;z-index:30;pointer-events:none;background:transparent;image-rendering:pixelated}.top-standings{margin-bottom:22px}.top-standings .roster{display:flex;gap:18px;height:auto;max-height:240px;align-items:flex-start}.top-standings .score-table{min-width:250px;margin:0}.under{grid-template-columns:1fr}.stream-mode .top-standings{display:none}.stream-mode #stream-scoreboard{position:fixed;top:12px;bottom:auto;left:50%;transform:translateX(-50%);z-index:20;max-width:calc(100vw - 24px);gap:16px}.stream-mode .score-table{width:300px;max-width:31vw}.stream-mode #sky{height:100vh;width:100vw;aspect-ratio:auto;object-fit:fill}

/* Compact OBS victory banner; no full-arena dimming or duplicate status. */
.stream-mode.raid-finished #stream-status{display:none!important}.stream-mode #result:not(.hidden){inset:auto auto 18px 50%;transform:translateX(-50%);width:min(860px,92vw);height:clamp(112px,10vw,190px);max-height:calc(100% - 16px);grid-template-columns:clamp(112px,14vw,190px) minmax(0,1fr);grid-template-rows:auto auto auto;align-content:center;align-items:center;justify-items:start;column-gap:24px;row-gap:5px;padding:18px 28px 18px 16px;border:1px solid #7b9252;border-left:6px solid #d8ec80;border-radius:12px;background:linear-gradient(110deg,#253024 0%,#17231f 40%,#14211e 100%);box-shadow:0 12px 36px #0008;animation:victory-enter .24s ease-out}.stream-mode #winner-duck{grid-column:1;grid-row:1/4;width:100%;height:100%;max-height:150px;object-fit:contain;align-self:center;filter:drop-shadow(0 6px 0 #0003)}.stream-mode #result .eyebrow{grid-column:2;margin:0;font:700 11px Consolas,monospace;letter-spacing:3px;color:#d8ec80}.stream-mode #winner{grid-column:2;margin:0;max-width:100%;text-align:left;font-size:clamp(22px,2.2vw,39px);font-weight:800;line-height:1.1;color:#f3f5dd;letter-spacing:-.6px}.stream-mode #result-detail{grid-column:2;margin:5px 0 0;max-width:100%;text-align:left;font-size:clamp(12px,1vw,17px);font-weight:600;line-height:1.35;color:#bed0c0}.stream-mode #again{display:none}
@keyframes victory-enter{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}@media(prefers-reduced-motion:reduce){.stream-mode #result:not(.hidden){animation:none}}@media(max-width:900px){.stream-mode #result:not(.hidden){bottom:8px;height:108px;padding:9px 16px 9px 8px;column-gap:12px;grid-template-columns:110px 1fr}.stream-mode #result .eyebrow{font-size:9px;letter-spacing:2px}.stream-mode #winner{font-size:22px}.stream-mode #result-detail{font-size:11px;margin-top:2px}.stream-mode #winner-duck{max-height:94px}}

/* Optional OBS preview backdrop, underneath the transparent game and sky. */
html.stream-mode.demo-mode body{background:#101714 url("demo-background.png") center center / cover no-repeat fixed!important}

/* OBS: one fixed top-ten panel, with raid information directly below it. */
#stream-hud{display:none}
.stream-mode #stream-hud{display:flex;flex-direction:column;gap:0;position:fixed;top:16px;right:16px;width:clamp(280px,22vw,370px);max-width:calc(100vw - 32px);z-index:20;pointer-events:none;color:#e4e5d9}
.stream-mode #stream-scoreboard{display:block;position:static;inset:auto;transform:none;max-width:none;width:100%}
.stream-mode #stream-hud .score-table{width:100%;max-width:none;table-layout:fixed;font-size:12px;border:0;border-radius:0;background:#172014cf}
.stream-mode #stream-hud .score-table caption{background:#172014df;padding:9px 10px;text-align:left}
.stream-mode #stream-hud .score-table th,.stream-mode #stream-hud .score-table td{padding:6px 5px}
.stream-mode #stream-hud .score-table th:nth-child(1){width:26px}.stream-mode #stream-hud .score-table th:nth-child(3){width:64px}.stream-mode #stream-hud .score-table th:nth-child(4){width:54px}.stream-mode #stream-hud .score-table th:nth-child(5){width:44px}
.stream-mode #stream-hud .score-name{max-width:none;overflow:hidden;text-overflow:ellipsis}
.stream-mode #stream-hud tr.amber .score-name{color:#efc95b}.stream-mode #stream-hud tr.blue .score-name{color:#89b8d2}.stream-mode #stream-hud tr.boss .score-name{color:#ee9c7c}
.stream-mode #stream-hud #stream-status{display:block!important;position:static;inset:auto;transform:none;max-width:none;width:100%;box-sizing:border-box;white-space:pre-line;text-align:left;border-radius:0 0 6px 6px;border-top:1px solid #85915c66;padding:10px 12px;background:#172014cf;font:600 12px/1.65 'Segoe UI',sans-serif;color:#dae5ba}
@media(max-width:1400px){.stream-mode #stream-hud{top:10px;right:10px;width:300px}.stream-mode #stream-hud .score-table td,.stream-mode #stream-hud .score-table th{padding:4px 4px}.stream-mode #stream-hud #stream-status{font-size:11px;padding:8px 10px}}
