/* Monthly Guild War: victory announcement and champion roster. */
.gw-dialog{width:min(920px,calc(100vw - 32px));max-width:920px;max-height:calc(100dvh - 40px);margin:auto;padding:0;overflow:auto;border:1px solid #b68c48;border-radius:6px;color:#f9ecd1;background:#100f0c;box-shadow:0 0 0 5px #cfa75b12,0 35px 120px #000c;font-family:var(--font-ui,'Be Vietnam Pro',sans-serif)}
.gw-dialog::backdrop,.gw-model-dialog::backdrop{background:#040706d9;backdrop-filter:blur(9px)}
.gw-dialog[open]{animation:gw-arrive .55s cubic-bezier(.16,1,.3,1) both}
.gw-victory{position:relative;isolation:isolate;overflow:hidden;padding:22px 52px 26px;text-align:center;background:radial-gradient(ellipse at 50% 37%,#9a63262b,transparent 60%),linear-gradient(180deg,#16140fd9,#0e1010fa 76%),url('/web/image/honor-fire-phoenix.png') center 30%/cover}
.gw-victory:before{content:'';position:absolute;inset:9px;border:1px solid #d7b47438;pointer-events:none;z-index:-1}
.gw-victory:after{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 35%,#ffe1a009 50%,transparent 65%);pointer-events:none;z-index:-1}
.gw-brand{display:flex;align-items:center;justify-content:center;gap:10px;margin:0 28px 12px;color:#d9c39a;letter-spacing:.3em;font-size:10px;font-weight:600}
.gw-brand img{width:54px;height:46px;object-fit:contain;filter:drop-shadow(0 2px 8px #0008)}
.gw-close{position:absolute;right:21px;top:18px;display:grid;place-items:center;width:38px;height:38px;padding:0;border:1px solid #d5b77a38;border-radius:50%;background:#090c0c80;color:#e6d6b8;font:26px/1 sans-serif;cursor:pointer;z-index:2;transition:background .2s,transform .2s}
.gw-close:hover{background:#d5b77a24;transform:rotate(90deg)}
.gw-kicker{font:600 10px/1.7 var(--font-ui,'Be Vietnam Pro',sans-serif);letter-spacing:.18em;color:#d4b16e;text-transform:uppercase}
.gw-event-badge{display:flex;align-items:center;justify-content:center;gap:16px;margin:0 0 14px}
.gw-event-badge>span:first-child,.gw-event-badge>span:last-child{height:1px;width:54px;background:linear-gradient(90deg,transparent,#cba059)}
.gw-event-badge>span:last-child{transform:rotate(180deg)}
.gw-victory h2{max-width:760px;margin:0 auto;color:#f6df9c;font-family:var(--font-display,'Noto Serif',serif);font-weight:600;font-size:clamp(25px,3.1vw,39px);line-height:1.33;letter-spacing:-.025em;text-wrap:balance;text-shadow:0 2px 20px #a475353d}
.gw-subtitle{margin:12px auto 0;max-width:600px;color:#c1b7a4;font-size:11px;line-height:1.9;text-wrap:balance}
.gw-winners{position:relative;margin:0 auto;max-width:660px}
.gw-winner{position:relative}
.gw-gold{display:flex;align-items:center;flex-direction:column;padding:0 0 20px}
.gw-crest{width:188px;height:171px;object-fit:contain;margin:-3px 0 -7px;filter:drop-shadow(0 0 20px #e6ba5a28);animation:gw-crest-in .8s cubic-bezier(.16,1,.3,1) both}
.gw-winner-label{display:block;font-size:8px;line-height:1.8;letter-spacing:.22em;font-weight:600;color:#d5bb85}
.gw-top{font-size:10px;letter-spacing:.25em;line-height:1.8;color:#f4d58c}
.gw-gold strong{display:block;margin:0;color:#ffedb8;font-family:var(--font-display,'Noto Serif',serif);font-size:clamp(35px,4.8vw,58px);font-weight:600;line-height:1.2;letter-spacing:-.035em;text-shadow:0 0 25px #dfab4b40}
.gw-gold-rule{display:block;width:180px;height:1px;margin-top:18px;background:linear-gradient(90deg,transparent,#e3bd70,transparent)}
.gw-runners{display:grid;grid-template-columns:1fr 24px 1fr;align-items:center;gap:16px;padding:17px 0;border-block:1px solid #bea26b26;background:linear-gradient(90deg,transparent,#d2af7010,transparent)}
.gw-silver,.gw-bronze{display:flex;align-items:center;justify-content:center;gap:14px;text-align:left;min-width:0}
.gw-runners .gw-top{display:block;font-size:9px;line-height:1.4;margin-bottom:3px}
.gw-runners strong{display:block;font:600 clamp(17px,2.4vw,25px)/1.3 var(--font-display,'Noto Serif',serif);overflow-wrap:anywhere}
.gw-silver strong,.gw-silver .gw-top{color:#d8e1e5}.gw-silver .gw-winner-label{color:#9baeb6}
.gw-bronze strong,.gw-bronze .gw-top{color:#e5b18b}.gw-bronze .gw-winner-label{color:#bf9475}
.gw-medal{display:grid;place-items:center;flex-shrink:0;width:49px;height:57px;clip-path:polygon(50% 0,98% 25%,93% 72%,50% 100%,7% 72%,2% 25%);color:#e4edf0;font:500 29px/1 var(--font-display,'Noto Serif',serif);background:linear-gradient(135deg,#a7b9bd,#343e46 48%,#9aa7a8);box-shadow:inset 0 0 0 6px #b5c7d14d}
.gw-bronze .gw-medal{color:#ffe2c0;background:linear-gradient(135deg,#cb9261,#62361e 48%,#cd9765)}
.gw-runner-divider{font-size:8px;color:#b99450}
.gw-tribute{max-width:600px;margin:19px auto;color:#c8c0af;font-size:11px;line-height:1.9;text-wrap:balance}
.gw-actions{display:flex;align-items:center;flex-direction:column;gap:14px}
.gw-primary{display:flex;align-items:center;justify-content:center;gap:14px;min-height:48px;max-width:100%;padding:13px 29px;border:1px solid #e9d09a;border-radius:2px;background:linear-gradient(115deg,#a98040,#efdaa0 50%,#b78e4e);box-shadow:0 3px 22px #c59a4e26,inset 0 1px #fff8;color:#21190c;font:700 10px/1.7 var(--font-ui,'Be Vietnam Pro',sans-serif);letter-spacing:.09em;cursor:pointer;transition:filter .2s,transform .2s}
.gw-primary:hover{filter:brightness(1.12);transform:translateY(-2px)}
.gw-dismiss{padding:0;border:0;background:none;color:#afa693;font:400 10px/1.8 var(--font-ui,'Be Vietnam Pro',sans-serif);cursor:pointer}
.gw-dismiss:hover{color:#ffdf9e}
.gw-embers{position:absolute;inset:0;overflow:hidden;z-index:-1;pointer-events:none}
.gw-embers i{position:absolute;bottom:-10%;left:9%;width:3px;height:3px;border-radius:50%;background:#efc16a;box-shadow:0 0 10px #dba44f;animation:gw-ember 8s linear infinite;opacity:0}
.gw-embers i:nth-child(2){left:23%;animation-delay:-3s}.gw-embers i:nth-child(3){left:36%;animation-delay:-6s}.gw-embers i:nth-child(4){left:49%;animation-delay:-1s}.gw-embers i:nth-child(5){left:62%;animation-delay:-5s}.gw-embers i:nth-child(6){left:73%;animation-delay:-2s}.gw-embers i:nth-child(7){left:85%;animation-delay:-7s}.gw-embers i:nth-child(8){left:95%;animation-delay:-4s}
.gw-dialog button:focus-visible,.gw-hall button:focus-visible,.gw-tab:focus-visible,.gw-model-dialog button:focus-visible{outline:2px solid #ffe4a5;outline-offset:5px}
html:has(.gw-dialog[open],.gw-model-dialog[open]){overflow:hidden}
.gw-hall[hidden],#character-rankings[hidden],.gw-count[hidden],.rank-legacy .rank-filters[hidden]{display:none!important}
.rank-legacy .rank-tab-btn.gw-tab{color:#d9b66e;display:inline-flex;align-items:center;gap:9px}
.rank-legacy .rank-tab-btn.gw-tab.active{color:#ffe3a1;border-color:#d8b367}
.gw-hall{padding:28px 24px 24px;scroll-margin-top:100px}
.gw-hall-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:25px;margin-bottom:28px}
.gw-hall-intro .gw-kicker{margin-bottom:11px}
.gw-hall-intro h3{font:500 clamp(23px,2.5vw,33px)/1.4 var(--font-display,'Noto Serif',serif);color:#f2e5c9;max-width:630px;text-wrap:balance}
.gw-hall-intro p:not(.gw-kicker){max-width:620px;font-size:12px;line-height:1.9;color:#b7b6ac;margin-top:13px}
.gw-reopen{display:flex;align-items:center;justify-content:center;gap:10px;flex-shrink:0;max-width:270px;padding:13px 17px;border:1px solid #bd9a584d;background:#b18e3d0d;color:#e2c58b;font:500 10px/1.7 var(--font-ui,'Be Vietnam Pro',sans-serif);cursor:pointer}
.gw-reopen:hover{background:#bc99571f}
.gw-banner{display:flex;align-items:center;gap:20px;padding:12px 28px;margin-bottom:24px;border:1px solid #c8a35d66;background:radial-gradient(ellipse at 15% 30%,#c7a15a21,transparent 60%),linear-gradient(115deg,#201c13,#131613);position:relative;overflow:hidden}
.gw-banner:after{content:'';position:absolute;inset:0 0 0 60%;pointer-events:none;background:linear-gradient(90deg,#151611,transparent),url('/web/image/honor-fire-phoenix.png') center 15%/cover;opacity:.17}
.gw-banner>img{width:112px;height:102px;position:relative;z-index:1}
.gw-banner h4{font:500 clamp(27px,3vw,43px)/1.3 var(--font-display,'Noto Serif',serif);color:#f6dda1;margin:3px 0;letter-spacing:-.03em}
.gw-banner p{color:#ccb77d;font-size:9px;letter-spacing:.18em}
.gw-count{margin-left:auto;display:flex;flex-direction:column;align-items:center;gap:5px;padding:0 20px;position:relative;z-index:1}
.gw-count strong{font:500 47px/1 var(--font-display,'Noto Serif',serif);color:#efdaa6}.gw-count span{font-size:8px;letter-spacing:.14em;color:#c5b58e}
.gw-roster{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.gw-warrior{min-width:0;position:relative;overflow:hidden;border:1px solid #bd9f603d;background:linear-gradient(160deg,#29261c,#141914 80%);animation:gw-arrive .5s both;animation-delay:calc(var(--gw-index)*65ms)}
.gw-warrior:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 0,#dac78c0f,transparent 70%);pointer-events:none}
.gw-warrior-leader{border-color:#d4ad68a1}
.gw-portrait{position:relative;height:145px;overflow:hidden;background:#1a201a}
.gw-portrait:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#171b16,transparent 75%)}
.gw-portrait img{width:200%;max-width:none;height:100%;margin-left:-100%;object-fit:cover;object-position:right center;filter:saturate(.65) brightness(.7);transition:transform .5s}
.gw-warrior:hover .gw-portrait img{transform:scale(1.045)}
.gw-slot{position:absolute;top:13px;right:16px;color:#f1dfb270;font:500 16px var(--font-display,'Noto Serif',serif);z-index:1}
.gw-role{display:flex;align-items:center;gap:7px;position:absolute;left:18px;bottom:8px;font-size:8px;letter-spacing:.08em;color:#ead4a2;z-index:1}
.gw-warrior-body{position:relative;padding:12px 18px 18px}
.gw-warrior h5{font:500 25px/1.4 var(--font-display,'Noto Serif',serif);color:#f4e6c5;overflow-wrap:anywhere;margin:0 0 6px}
.gw-warrior-meta{display:flex;gap:10px;justify-content:space-between;color:#b4b6a8;font-size:10px;line-height:1.8;flex-wrap:wrap}
.gw-warrior-meta span:last-child{color:#dfc587}
.gw-character-btn{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;margin-top:17px;padding:12px 0 0;border:0;border-top:1px solid #e1c68724;background:none;color:#d6bd83;font:500 10px/1.5 var(--font-ui,'Be Vietnam Pro',sans-serif);cursor:pointer}
.gw-character-btn:hover{color:#ffe5aa}
.gw-state{grid-column:1/-1;padding:36px 22px;text-align:center;border:1px solid #c8ad6a26;color:#c9c2b1;font-size:12px;line-height:1.9}
.gw-state button{display:block;margin:16px auto 0;padding:10px 22px;border:1px solid #cba86466;background:#bda16013;color:#e8cf99;font:inherit;cursor:pointer}
.gw-skeleton{height:284px;border:1px solid #c8ad6a26;background:linear-gradient(110deg,#bfa36705 30%,#bfa36712 48%,#bfa36705 66%);background-size:250% 100%;animation:gw-loading 1.5s ease-in-out infinite}
.gw-model-dialog{width:min(540px,calc(100vw - 28px));max-height:calc(100dvh - 30px);margin:auto;padding:28px;border:1px solid #ba9a5d;background:#101610;color:#e8d7ae;border-radius:6px;overflow:auto}
.gw-model-dialog h2{font:500 30px/1.4 var(--font-display,'Noto Serif',serif);margin:12px 0 0}.gw-model-dialog>.gw-kicker{padding-right:40px}
#gw-model-stage{margin-top:12px;min-height:380px}#gw-model-stage iframe{display:block;border:0;width:100%;height:420px;max-height:60dvh;background:transparent}
@keyframes gw-arrive{from{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:none}}
@keyframes gw-crest-in{from{opacity:0;transform:translateY(-15px) scale(.85)}to{opacity:1;transform:none}}
@keyframes gw-ember{0%{opacity:0;transform:translate3d(0,0,0)}15%{opacity:.6}80%{opacity:.4}100%{opacity:0;transform:translate3d(30px,-790px,0)}}
@keyframes gw-loading{to{background-position:-150% 0}}
@media(min-width:1000px) and (max-height:820px){.gw-victory{padding-block:16px 20px}.gw-brand{margin-bottom:7px}.gw-brand img{width:43px;height:35px}.gw-event-badge{margin-bottom:8px}.gw-victory h2{font-size:30px}.gw-crest{width:144px;height:131px}.gw-gold strong{font-size:46px}.gw-gold{padding-bottom:14px}.gw-tribute{margin-block:14px}.gw-actions{gap:10px}.gw-runners{padding-block:12px}}
@media(max-width:760px){.gw-hall-intro{flex-direction:column;gap:18px}.gw-reopen{max-width:none}.gw-banner{padding:12px 18px;gap:12px}.gw-roster{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gw-count{padding:0 5px}.gw-banner>img{width:85px;height:77px}.gw-banner .gw-kicker{font-size:8px;letter-spacing:.08em}.gw-count strong{font-size:36px}.gw-banner h4{font-size:32px}.gw-victory{padding:22px 30px}.gw-victory h2{font-size:31px}.gw-crest{width:170px;height:155px}.gw-runners{gap:10px;grid-template-columns:1fr 12px 1fr}.gw-silver,.gw-bronze{gap:9px}.gw-medal{width:39px;height:46px;font-size:23px}.gw-winner-label{letter-spacing:.11em}}
@media(max-width:480px){.gw-dialog{width:calc(100vw - 20px);max-height:calc(100dvh - 24px)}.gw-victory{padding:18px 21px 24px}.gw-brand{font-size:8px;gap:7px;margin-bottom:13px}.gw-brand img{width:43px;height:37px}.gw-close{right:14px;top:14px;width:32px;height:32px;font-size:23px}.gw-kicker{font-size:8px;letter-spacing:.09em}.gw-event-badge{gap:8px;margin-bottom:13px}.gw-event-badge>span:first-child,.gw-event-badge>span:last-child{width:21px}.gw-victory h2{font-size:25px;line-height:1.45}.gw-subtitle{font-size:10px;margin-top:9px}.gw-crest{width:151px;height:137px;margin:3px 0 -3px}.gw-gold strong{font-size:40px}.gw-gold-rule{margin-top:14px}.gw-gold{padding-bottom:15px}.gw-runners{grid-template-columns:1fr 1fr;gap:12px;padding:17px 0}.gw-runner-divider{display:none}.gw-silver,.gw-bronze{gap:8px}.gw-runners strong{font-size:17px}.gw-runners .gw-winner-label{font-size:6px;letter-spacing:.04em}.gw-runners .gw-top{font-size:8px}.gw-medal{width:29px;height:37px;font-size:19px}.gw-tribute{margin-block:17px;font-size:10px;line-height:1.9}.gw-primary{width:100%;font-size:9px;padding:12px;gap:10px}.gw-dismiss{font-size:9px}.gw-banner{gap:9px;padding:14px 10px}.gw-banner>img{width:64px;height:58px}.gw-banner h4{font-size:27px}.gw-banner p{font-size:8px}.gw-count{gap:6px}.gw-count strong{font-size:30px}.gw-count span{font-size:6px;letter-spacing:.05em}.gw-banner .gw-kicker{font-size:7px}.gw-roster{gap:10px}.gw-portrait{height:110px}.gw-role{left:11px;font-size:7px;gap:5px}.gw-slot{right:10px;font-size:13px}.gw-warrior-body{padding:8px 11px 13px}.gw-warrior h5{font-size:22px}.gw-warrior-meta{font-size:9px;gap:2px}.gw-character-btn{font-size:9px;margin-top:13px}.gw-hall{padding-top:13px}.gw-hall-intro h3{font-size:25px}.gw-hall-intro p:not(.gw-kicker){font-size:11px}.gw-model-dialog{padding:24px 18px}}
@media(prefers-reduced-motion:reduce){.gw-dialog[open],.gw-crest,.gw-embers i,.gw-warrior,.gw-skeleton{animation:none}.gw-embers{display:none}.gw-primary,.gw-close,.gw-portrait img{transition:none}}
