:root{--gold:#ffc400;--cyan:#56e6ff;--ink:#030405;--muted:#aeb5bd}
*{box-sizing:border-box}
html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#030405;color:#fff;font-family:"Microsoft YaHei UI","Microsoft YaHei",system-ui,sans-serif}
button,input,textarea{font:inherit}button{color:inherit}
.page{position:relative;width:100%;height:100%;isolation:isolate;background:radial-gradient(circle at 76% 45%,#101827 0,#07090d 34%,#020304 72%)}
.page:before{content:"";position:absolute;inset:0;z-index:-1;opacity:.09;background-image:linear-gradient(45deg,#fff 1px,transparent 1px),linear-gradient(-45deg,#fff 1px,transparent 1px);background-size:84px 84px;mask-image:linear-gradient(90deg,#000,transparent 58%)}
.page:after{content:none}
.page.turnNext :is(.characterInfo,.modelHost){animation:characterSlideNext .34s cubic-bezier(.4,0,.2,1) both}
.page.turnPrev :is(.characterInfo,.modelHost){animation:characterSlidePrev .34s cubic-bezier(.4,0,.2,1) both}
@keyframes characterSlideNext{0%{opacity:1;transform:translateX(0);filter:none}44%{opacity:0;transform:translateX(-18px);filter:blur(2px)}45%{opacity:0;transform:translateX(18px);filter:blur(2px)}100%{opacity:1;transform:translateX(0);filter:none}}
@keyframes characterSlidePrev{0%{opacity:1;transform:translateX(0);filter:none}44%{opacity:0;transform:translateX(18px);filter:blur(2px)}45%{opacity:0;transform:translateX(-18px);filter:blur(2px)}100%{opacity:1;transform:translateX(0);filter:none}}
.brandbar{position:absolute;z-index:20;top:25px;left:7.5vw;display:flex;align-items:center;gap:18px}
.brand{display:block;width:310px;height:72px}.brand img{width:100%;height:100%;object-fit:contain;object-position:left center}
.switchBtn{height:66px;display:flex;align-items:center;gap:12px;padding:6px 17px 6px 7px;border:0;background:transparent;box-shadow:none;cursor:pointer;transition:.2s}
.switchBtn:hover{transform:translateY(-2px);color:var(--gold);box-shadow:none}.switchBtn>.switchText{display:flex;flex-wrap:wrap;justify-content:center;font-size:23px;font-weight:800;line-height:1.15}.switchText>span{white-space:nowrap}.fixedSwitchIcon{display:block;width:52px;height:52px;border-radius:11px;object-fit:cover}
.miniAvatar{position:relative;display:block;width:52px;height:52px;flex:0 0 auto}.miniAvatar .avatarArt,.miniAvatar .avatarFrame{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.miniAvatar .avatarFrame{z-index:2;pointer-events:none}.miniAvatar .avatarElement{position:absolute;z-index:3;left:1px;top:1px;width:19px;height:29px;object-fit:contain}
.characterPane{position:absolute;z-index:5;inset:0 45% 0 0;padding:165px 3.5vw 28px 7.5vw;background:linear-gradient(90deg,#030405 0,#030405 72%,#030405ed 88%,transparent 100%);pointer-events:none}.characterPane>*{pointer-events:auto}
.identity{display:grid;grid-template-columns:142px 1fr;gap:25px;align-items:center}.portraitStack{position:relative;width:142px;height:142px;border-radius:25px;overflow:hidden;background:#070809}.avatarCrop{position:absolute;z-index:1;inset:7.5%;border-radius:22%;overflow:hidden;background:#070809}.avatarCrop .avatarArt{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.25);transform-origin:center}.portraitStack .avatarFrame{position:absolute;z-index:2;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;transform:scale(1.07);transform-origin:center}.portraitStack .avatarElement{position:absolute;z-index:3;left:3px;top:3px;width:34px;height:48px;object-fit:contain}
.portraitStack.no-art{background:#12151a;border-radius:25px}.no-art .avatarCrop{inset:10%}.no-art .avatarCrop .avatarArt{object-fit:contain;padding:30%;opacity:.65;transform:none}
.eyebrow{display:flex;align-items:center;gap:13px;margin-bottom:10px}.stars{display:flex;gap:0}.stars img{width:39px;height:39px;object-fit:contain;margin-right:-3px;filter:drop-shadow(0 2px 0 #774800)}.roleIcon{width:40px;height:40px;object-fit:contain}
.nameRow{display:flex;align-items:flex-end;gap:12px;min-width:0}.nameRow h1{margin:0;font-size:45px;line-height:1.08;letter-spacing:1px;white-space:nowrap}.childId{font-size:16px;font-weight:700;color:#d9dde1;padding-bottom:5px;white-space:nowrap}
.quote{margin:25px 0 18px;max-width:610px;font-size:21px;line-height:1.55;font-weight:650;color:#f5f5f5;text-shadow:0 2px 10px #000}.skills{display:flex;gap:14px;margin-top:16px}
.skillTab{position:relative;width:75px;height:75px;padding:2px;border:0;border-radius:50%;background:radial-gradient(circle,#171a1e 64%,#7f8790 67%,#121417 71%);cursor:pointer;transition:filter .2s,box-shadow .2s;filter:drop-shadow(0 5px 9px #0009);overflow:visible}.skillTab img{display:block;width:100%;height:100%;object-fit:contain;border-radius:50%;clip-path:circle(47% at 50% 50%);image-rendering:auto;backface-visibility:hidden}.skillTab:hover{filter:brightness(1.12) drop-shadow(0 0 10px #ffbd0066)}.skillTab.active{box-shadow:0 0 0 2px #fff,0 0 0 5px var(--gold),0 0 28px #ffbe00bb}.skillTab.active:after{content:"";position:absolute;inset:-10px;border:1px solid var(--gold);border-radius:50%;animation:pulse 1.8s infinite}@keyframes pulse{50%{transform:scale(1.08);opacity:.28}}
.skillDetail{max-width:680px;max-height:calc(100vh - 520px);margin-top:19px;padding:17px 21px;border-left:3px solid var(--gold);background:linear-gradient(90deg,#121417f2,#0b0d0fd4 76%,transparent);overflow-x:hidden;overflow-y:auto;scrollbar-width:none;overscroll-behavior:contain;opacity:0;transform:translateY(8px);pointer-events:none;transition:.22s}.skillDetail::-webkit-scrollbar{display:none;width:0;height:0}.skillDetail.show{opacity:1;transform:none;pointer-events:auto}.skillDetail:empty{display:none}.skillMeta{font-size:13px;color:var(--gold);letter-spacing:.08em}.skillDetail h2{font-size:27px;margin:2px 0 7px}.skillText{font-size:17px;line-height:1.65;color:#f1f2f4}.buffs{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}.buff{display:grid;grid-template-columns:38px 1fr;gap:9px;align-items:center;min-width:190px;padding:7px 10px;border:1px solid #ffffff24;border-radius:8px;background:#050607cc}.buff img{width:38px;height:38px;object-fit:contain}.buff b{display:block;font-size:14px;color:#a4ff72}.buff small{display:block;color:#c4c8cd;font-size:12px}
.modelPane{position:absolute;z-index:2;inset:0 0 0 36%;overflow:hidden;background:radial-gradient(ellipse at 52% 48%,#112136a8 0,transparent 53%)}.modelHost{position:absolute;inset:0}.player{position:absolute;inset:0;width:100%;height:100%;border:0;background:#030405;opacity:1;visibility:visible;color-scheme:dark}.player.retired,.player.standby{opacity:0;visibility:hidden;pointer-events:none}.player.pending{opacity:0;visibility:visible;pointer-events:none}.modelLoading{position:absolute;z-index:3;inset:0;display:grid;place-content:center;justify-items:center;gap:14px;color:#c9d1da;font-size:14px;letter-spacing:.08em;background:radial-gradient(circle,#111c2b88,transparent 48%);pointer-events:none}.modelLoading:before{content:"";width:34px;height:34px;border:2px solid #ffffff28;border-top-color:var(--gold);border-radius:50%;animation:modelSpin .8s linear infinite}@keyframes modelSpin{to{transform:rotate(360deg)}}.modelFallback{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:18px;background:radial-gradient(circle,#16243a 0,#080b11 55%,#030405 78%)}.modelFallback img{width:min(40vw,430px);aspect-ratio:1;object-fit:cover;border-radius:23%;box-shadow:0 0 0 4px #ffffff18,0 0 0 8px #080a0d,0 30px 80px #000}.modelFallback p{margin:0;padding:8px 16px;border-radius:20px;background:#080a0dcc;color:#aeb5bd;font-size:14px}
.navArrow{position:absolute;z-index:30;top:50%;width:44px;height:80px;margin-top:-40px;border:0;background:center/contain no-repeat;cursor:pointer;filter:drop-shadow(0 0 9px #ffb00080);transition:.2s}.navArrow:hover{transform:scale(1.1);filter:brightness(1.25) drop-shadow(0 0 14px #ffb000)}.prev{left:8px;background-image:var(--nav-prev,url('/common/arrow_slider_l.png'))}.next{right:8px;background-image:var(--nav-next,url('/common/arrow_slider_r.png'))}
.viewerTools{position:absolute;z-index:25;right:27px;bottom:48px;display:flex;flex-direction:column;align-items:flex-end;gap:8px}.controlRow{position:relative}.toolButton{width:74px;height:74px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:1px solid #8f681d;border-radius:11px;background:linear-gradient(145deg,#211b0d,#0b0c0f 72%);box-shadow:inset 0 0 0 1px #000,0 8px 20px #0009;cursor:pointer;font-size:14px;font-weight:800;transition:.2s}.toolButton svg{width:23px;height:23px;fill:none;stroke:var(--gold);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.toolButton:hover,.toolButton.active{border-color:var(--gold);color:var(--gold);transform:translateX(-2px);box-shadow:inset 0 0 15px #ffc40020,0 0 15px #ffc40035}.toolButton.skin{background:linear-gradient(145deg,#3b2b09,#121006 72%);border-color:#d49c22}
.popover{position:absolute;display:none;right:calc(100% + 13px);top:50%;transform:translateY(-50%);width:262px;max-height:240px;padding:10px;border:1px solid #7c5a18;border-radius:12px;background:#0b0d0ff5;box-shadow:0 18px 45px #000c;overflow:auto}.popover.open{display:grid;grid-template-columns:1fr 1fr;gap:7px}.popover button{min-height:40px;border:1px solid #5d4618;border-radius:7px;background:#17140b;cursor:pointer}.popover button:hover{border-color:var(--gold);color:var(--gold);background:#2a210c}.popover button:disabled{opacity:.45;cursor:not-allowed}.skinMenu{width:auto;max-width:390px;grid-template-columns:repeat(4,76px)!important;overflow:visible}
.scaleBar{display:flex;align-items:center;width:74px;height:31px;padding:6px 8px;border-radius:9px;background:#0a0c0fe8;border:1px solid #70531b}.scaleBar input{width:100%;height:17px;margin:0;cursor:pointer;appearance:none;background:transparent}.scaleBar input::-webkit-slider-runnable-track{height:4px;border-radius:99px;background:linear-gradient(90deg,#ff9e00,#ffe36b);box-shadow:0 0 8px #ffb00055}.scaleBar input::-webkit-slider-thumb{appearance:none;width:15px;height:15px;margin-top:-5.5px;border:2px solid #fff1bd;border-radius:50%;background:#ffb400;box-shadow:0 0 10px #ffb000}.scaleBar input::-moz-range-track{height:4px;border-radius:99px;background:#ffb400}.scaleBar input::-moz-range-thumb{width:15px;height:15px;border:2px solid #fff1bd;border-radius:50%;background:#ffb400}
.skinChoice{position:relative;width:76px;height:76px;padding:0;border:2px solid transparent;border-radius:12px;background:#070809;cursor:pointer;overflow:hidden}.skinChoice.active{border-color:var(--gold);box-shadow:0 0 18px #ffc40066}.skinChoice .avatarCrop{z-index:1}.skinChoice .avatarFrame{position:absolute;z-index:2;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;transform:scale(1.07);transform-origin:center}.skinChoice>span:last-child{position:absolute;z-index:4;right:3px;bottom:3px;padding:1px 4px;border-radius:4px;background:#000c;font-size:10px;pointer-events:none}
dialog{width:min(1180px,92vw);height:min(820px,88vh);padding:0;border:1px solid #ffffff2b;border-radius:16px;background:#0b0d10f7;color:#fff;box-shadow:0 0 0 100vmax #000c,0 30px 100px #000;overflow:hidden}dialog::backdrop{background:#0000}.pickerHeader{position:sticky;top:0;z-index:2;padding:18px 20px 14px;background:#0b0d10fa;border-bottom:1px solid #ffffff18}.pickerTop{display:flex;align-items:center;gap:16px}.pickerTop h2{margin:0;font-size:24px}.search{flex:1;height:44px;padding:0 15px;border:1px solid #ffffff25;border-radius:8px;background:#16191e;color:#fff;outline:none}.search:focus{border-color:var(--gold)}.closePicker{width:42px;height:42px;border:0;border-radius:50%;background:#ffffff12;cursor:pointer;font-size:22px}.filterRows{display:grid;gap:8px;margin-top:14px}.filterRow{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.filterLabel{width:56px;color:#8f979f;font-size:13px}.filterChip{padding:5px 12px;border:1px solid #ffffff18;border-radius:20px;background:#15181d;cursor:pointer;font-size:13px}.filterChip.active{border-color:var(--gold);background:#ffc400;color:#171000;font-weight:800}.pickerCount{padding:12px 22px 0;color:#9199a2;font-size:13px}.characterGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(125px,1fr));gap:12px;padding:14px 20px 24px;overflow:auto;height:calc(100% - 205px);scrollbar-width:none}.characterGrid::-webkit-scrollbar{display:none}.characterCard{display:block;min-width:0;padding:8px;border:1px solid #ffffff14;border-radius:11px;background:#12151a;color:#fff;text-decoration:none;transition:.18s}.characterCard:hover{transform:translateY(-3px);border-color:var(--gold);background:#1a1d22}.cardAvatar{position:relative;display:block;aspect-ratio:1;border-radius:10px;overflow:hidden;background:#090b0e}.cardAvatar .avatarFrame{position:absolute;z-index:2;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.07);transform-origin:center}.cardAvatar .avatarElement{position:absolute;z-index:3;left:2px;top:2px;width:24%;height:35%;object-fit:contain}.characterCard b{display:block;margin-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.characterCard small{color:#949ca5}.empty{grid-column:1/-1;padding:70px;text-align:center;color:#9ba2aa}.loadError{padding:160px 8vw;font-size:18px}
@media(max-width:1100px){.brandbar{left:68px}.brand{width:230px}.switchBtn>.switchText{font-size:18px}.characterPane{right:39%;padding-left:68px}.modelPane{left:39%}.identity{grid-template-columns:108px 1fr}.portraitStack{width:108px;height:108px}.nameRow h1{font-size:34px}.quote{font-size:18px}.viewerTools{right:16px}.skillDetail{max-height:calc(100vh - 485px)}.stars img{width:31px;height:31px}}
@media(prefers-reduced-motion:reduce){.page.turnNext :is(.characterInfo,.modelHost),.page.turnPrev :is(.characterInfo,.modelHost){animation-duration:.01ms}}
@media(max-width:760px){html,body{overflow:auto}.page{display:flex;flex-direction:column;min-height:100vh;height:auto;background:#030405}.brandbar{position:relative;order:0;left:auto;top:auto;width:100%;padding:14px 18px 8px;gap:8px;justify-content:space-between;background:linear-gradient(180deg,#030405 0%,#030405 55%,#07101a 100%)}.brand{width:165px;height:52px;min-width:145px;flex:0 1 165px}.switchBtn{height:50px;max-width:none;padding:4px 7px;gap:7px;flex:0 0 auto}.fixedSwitchIcon{width:38px;height:38px}.switchBtn>.switchText{font-size:15px;max-width:none;flex-wrap:nowrap}.modelPane{position:relative;order:1;inset:auto;height:72vh;min-height:570px;-webkit-mask-image:none;mask-image:none;background:radial-gradient(ellipse at 54% 42%,#112136 0,#09101a 52%,#030405 92%)}.modelPane:before{content:"";position:absolute;z-index:4;left:0;right:0;top:0;height:96px;background:linear-gradient(#07101a,transparent);pointer-events:none}.modelPane:after{content:"";position:absolute;z-index:4;left:0;right:0;bottom:0;height:120px;background:linear-gradient(transparent,#030405);pointer-events:none}.characterPane{position:relative;order:2;align-self:stretch;inset:auto;padding:30px 18px 38px;text-align:left;background:linear-gradient(180deg,#030405,#030405f2)}.characterInfo,.characterPane .quote,.characterPane .skillDetail{text-align:left;margin-left:0;margin-right:0}.characterPane .skills{justify-content:flex-start}.identity{grid-template-columns:88px 1fr;gap:14px}.portraitStack{width:88px;height:88px}.nameRow{display:block}.nameRow h1{font-size:29px}.childId{font-size:12px}.quote{font-size:17px}.skills{gap:8px}.skillTab{width:58px;height:58px}.skillDetail{max-height:none}.prev,.next{position:fixed;width:28px;height:56px;margin-top:-28px;transition:opacity .16s ease,transform .16s ease,visibility 0s linear 0s}.page.mobileScrolled .navArrow{opacity:0;visibility:hidden;pointer-events:none;transform:scale(.86);transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s}.prev{left:4px}.next{right:4px}.viewerTools{right:10px;bottom:18px;gap:4px}.toolButton{width:48px;height:48px;gap:1px;border-radius:8px;font-size:11px}.toolButton svg{width:16px;height:16px}.scaleBar{width:48px;height:23px;padding:4px 6px}.scaleBar input::-webkit-slider-thumb{width:12px;height:12px;margin-top:-4px}.scaleBar input::-moz-range-thumb{width:12px;height:12px}.skinMenu{max-width:calc(100vw - 76px)}.skinMenu .skinChoice{width:58px;height:58px;aspect-ratio:1}.characterGrid{grid-template-columns:repeat(auto-fill,minmax(105px,1fr))}}

/* Five reusable elemental portrait frames. The portrait is clipped below the CSS frame. */
:is(.portraitStack,.skinChoice,.cardAvatar){--frame-hi:#fff9a8;--frame-main:#efd84a;--frame-low:#89701e;isolation:isolate}
:is(.portraitStack,.skinChoice,.cardAvatar).element-dark{--frame-hi:#d689ff;--frame-main:#9149bd;--frame-low:#432052}
:is(.portraitStack,.skinChoice,.cardAvatar).element-fire{--frame-hi:#ff8a31;--frame-main:#ff3b24;--frame-low:#a71317}
:is(.portraitStack,.skinChoice,.cardAvatar).element-forest{--frame-hi:#d9ff20;--frame-main:#78c900;--frame-low:#08752e}
:is(.portraitStack,.skinChoice,.cardAvatar).element-water{--frame-hi:#38e5ff;--frame-main:#129fe7;--frame-low:#303dcc}
:is(.portraitStack,.skinChoice,.cardAvatar) .avatarCrop{inset:3px;border-radius:22%;background:#0a0c0f}
:is(.portraitStack,.skinChoice,.cardAvatar) .avatarCrop .avatarArt{transform:scale(1.25)}
:is(.portraitStack,.skinChoice,.cardAvatar)::before{content:"";position:absolute;z-index:2;inset:0;padding:4px;border-radius:23%;background:linear-gradient(155deg,var(--frame-hi) 0 16%,var(--frame-main) 45% 68%,var(--frame-low) 100%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;filter:drop-shadow(0 1px 1px #000) drop-shadow(0 0 3px color-mix(in srgb,var(--frame-main) 38%,transparent))}
:is(.portraitStack,.skinChoice,.cardAvatar)::after{content:"";position:absolute;z-index:2;inset:4px;border:1px solid #050607cc;border-radius:20%;box-shadow:inset 0 0 0 1px #ffffff26,inset 0 0 5px #000;pointer-events:none}
.portraitStack .avatarElement{left:-1px;top:-2px;width:38px;height:52px;filter:drop-shadow(0 2px 2px #000)}
.skinChoice .avatarElement{position:absolute;z-index:3;left:-1px;top:-2px;width:28%;height:39%;object-fit:contain;filter:drop-shadow(0 1px 1px #000)}
.cardAvatar .avatarElement{left:-1px;top:-2px;width:29%;height:40%;filter:drop-shadow(0 1px 1px #000)}
.skinChoice::before,.cardAvatar::before{padding:3px}
.skinChoice::after,.cardAvatar::after{inset:3px}
.characterGrid{grid-auto-rows:max-content;align-content:start}
@media(min-width:761px){
  .characterPane{right:70%;padding:165px 1.5vw 28px 4vw;background:linear-gradient(90deg,#030405 0,#030405 70%,#030405e8 84%,transparent 100%)}
  .modelPane{left:20%}
  .modelPane:before{content:"";position:absolute;z-index:4;inset:0 auto 0 0;width:12%;pointer-events:none;background:linear-gradient(90deg,#030405,transparent)}
  .identity{grid-template-columns:104px minmax(0,1fr);gap:14px}
  .portraitStack{width:104px;height:104px;border-radius:20px}
  .portraitStack .avatarElement{width:30px;height:42px}
  .eyebrow{gap:8px;margin-bottom:6px}
  .stars img{width:29px;height:29px;margin-right:-2px}
  .roleIcon{width:31px;height:31px}
  .nameRow{gap:8px}
  .nameRow h1{font-size:34px}
  .childId{font-size:13px;padding-bottom:3px}
  .quote{max-width:460px;margin:21px 0 14px;font-size:16px;line-height:1.55}
  .skills{gap:9px;margin-top:12px}
  .skillTab{width:58px;height:58px}
  .skillDetail{max-width:480px;max-height:calc(100vh - 440px);margin-top:15px;padding:14px 17px}
  .skillDetail h2{font-size:23px}
  .skillText{font-size:16px}
  .brandbar{left:4vw}
  .viewerTools{right:22px;bottom:44px;gap:6px}
  .toolButton{width:62px;height:62px;gap:3px;border-radius:9px;font-size:13px}
  .toolButton svg{width:20px;height:20px}
  .scaleBar{width:62px;height:27px;padding:5px 7px}
}
.skinMenu.open{display:flex;flex-wrap:nowrap;width:max-content;max-width:min(760px,calc(100vw - 150px));overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.skinMenu.open::-webkit-scrollbar{display:none}
.skinMenu .skinChoice{flex:0 0 76px}
@media(max-width:760px){.skinMenu .skinChoice{flex:0 0 58px}}
@media(max-width:760px){.brand{min-width:132px}.switchBtn{min-width:82px;flex:0 1 auto}.switchBtn>span:first-child{flex:0 0 auto}.switchBtn>.switchText{min-width:34px;flex:1 1 60px;flex-wrap:wrap}}
@media(max-width:760px){.characterPane .skillDetail{width:100%;max-width:none}}
@media(max-width:760px){.characterPane .skillDetail h2{font-size:24px}.characterPane .skillText{font-size:15px}}
@media(max-width:760px){.portraitStack .avatarElement{width:25px;height:36px}.characterPane .skillDetail{padding-right:3px}.characterPane .buffs{width:100%}.characterPane .buff{width:100%;padding-right:4px}}
@media(max-width:340px){.brandbar{padding-left:12px;padding-right:12px}}

/* Local comment UI preview. Data and account wiring will be added separately. */
.commentPanel{position:absolute;z-index:24;top:0;right:112px;bottom:0;width:min(390px,calc(100vw - 200px));display:flex;flex-direction:column;border-left:1px solid #d69e263d;background:linear-gradient(180deg,#151207fa 0,#0b0d12fc 34%,#05070afc 100%);box-shadow:-24px 0 70px #000b;opacity:0;visibility:hidden;transform:translateX(28px);pointer-events:none;transition:opacity .22s ease,transform .22s ease,visibility 0s linear .22s}.commentPanel.open{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition-delay:0s}.commentHeader{display:flex;align-items:center;justify-content:space-between;min-height:104px;padding:22px 24px 17px;border-bottom:1px solid #fff2c326;background:linear-gradient(135deg,#241d08cc,#0e1015 78%)}.commentKicker{display:block;margin-bottom:3px;color:#d7a92f;font-size:10px;font-weight:800;letter-spacing:.22em}.commentHeader h2{margin:0;font-size:25px;letter-spacing:.04em}.commentHeader h2 small{margin-left:6px;color:#b7bec6;font-size:15px;font-weight:600}.closeComment{width:35px;height:35px;border:1px solid #ffffff1f;border-radius:50%;background:#ffffff0a;color:#c9cdd2;cursor:pointer;font-size:23px;line-height:1;transition:.18s}.closeComment:hover{border-color:var(--gold);background:#ffc40016;color:var(--gold);transform:rotate(90deg)}.commentBody{min-height:0;flex:1;padding:22px 20px;overflow:auto;scrollbar-width:none}.commentBody::-webkit-scrollbar{display:none}.commentContext{margin:0 2px 12px;color:#858d96;font-size:12px}.commentContext b{color:#d5d9dd;font-weight:650}.commentComposer{display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px}.commentUser{position:relative;width:38px;height:38px;display:grid;place-items:center;border:1px solid #9f741d;border-radius:50%;background:#14171c;overflow:hidden}.commentUserHalo{position:absolute;inset:-12px;background:radial-gradient(circle,#ffc40042,transparent 62%)}.commentUser svg{position:relative;width:23px;height:23px;fill:none;stroke:#d9b64e;stroke-width:1.7}.commentEditor{border:1px solid #ffffff24;border-radius:11px;background:#080a0dcc;box-shadow:inset 0 0 22px #0008;overflow:hidden;transition:.18s}.commentEditor:focus-within{border-color:#d69d2b;box-shadow:inset 0 0 22px #0008,0 0 0 2px #ffc40012}.commentEditor textarea{display:block;width:100%;min-height:88px;padding:13px 14px;border:0;outline:0;resize:none;background:transparent;color:#f2f3f4;font-size:14px;line-height:1.55}.commentEditor textarea::placeholder{color:#717981}.commentActions{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 9px 9px 13px;border-top:1px solid #ffffff10}.commentActions span{color:#777f88;font-size:10px}.commentActions button{min-width:58px;height:29px;border:1px solid #8c671d;border-radius:7px;background:linear-gradient(180deg,#46340e,#211905);color:#d5b14c;font-size:12px;font-weight:750}.commentActions button:disabled{cursor:not-allowed;filter:saturate(.55);opacity:.65}.commentDivider{display:flex;align-items:center;gap:10px;margin:24px 2px 0;color:#aeb5bd;font-size:12px;font-weight:700}.commentDivider:after{content:"";height:1px;flex:1;background:linear-gradient(90deg,#ffffff28,transparent)}.commentEmpty{min-height:230px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#707984;text-align:center}.commentEmpty svg{width:47px;height:47px;margin-bottom:13px;fill:none;stroke:#87691f;stroke-width:1.4;opacity:.8}.commentEmpty b{margin-bottom:6px;color:#aeb4bb;font-size:14px}.commentEmpty span{font-size:11px}.commentButton{background:linear-gradient(145deg,#1c2027,#090b0e 72%)}
@media(max-width:1100px) and (min-width:761px){.commentPanel{right:92px;width:min(340px,calc(100vw - 160px))}}
@media(max-width:760px){.commentPanel{position:relative;z-index:3;order:3;top:auto;right:auto;bottom:auto;width:auto;margin:0;padding:0 18px 38px;border:0;background:linear-gradient(180deg,#030405 0,#090d13 28%,#030405 100%);box-shadow:none;opacity:1;visibility:visible;transform:none;pointer-events:auto;transition:none}.commentHeader{min-height:76px;padding:18px 3px 12px;background:transparent;border-bottom-color:#ffffff18}.commentHeader h2{font-size:21px}.commentKicker{font-size:9px}.closeComment{display:none}.commentBody{padding:16px 0 0;overflow:visible}.commentContext{margin-left:0}.commentComposer{grid-template-columns:34px minmax(0,1fr);gap:8px}.commentUser{width:34px;height:34px}.commentEditor textarea{min-height:76px;padding:11px 12px;font-size:13px}.commentActions{padding-left:11px}.commentEmpty{min-height:170px}.commentButton.active{transform:none}}
.commentHeader h2 small{font-size:11px;font-weight:700;letter-spacing:.12em}.commentMount{min-height:260px}.commentLoading{padding:60px 12px;text-align:center;color:#818a93;font-size:12px}
@media(max-width:760px){.commentPanel{min-height:100vh;padding-bottom:max(38px,env(safe-area-inset-bottom));scroll-margin-top:10px}.commentMount{min-height:70vh}}
.filterToggle,.filterSelectToggle{display:none}.filterOptions{display:contents}
@media(max-width:760px){
  dialog{width:calc(100vw - 20px);height:calc(100dvh - 24px);max-height:none;border-radius:14px}
  dialog[open]{display:flex;flex-direction:column}
  .pickerHeader{position:relative;flex:0 0 auto;padding:14px 10px 9px}
  .pickerTop{display:grid;grid-template-areas:"title close" "search filter";grid-template-columns:minmax(0,1fr) 108px;gap:9px 7px}
  .pickerTop h2{grid-area:title;align-self:center;margin:0;font-size:20px;line-height:1.2;white-space:nowrap}
  .search{grid-area:search;width:100%;min-width:0;height:40px;padding:0 10px;font-size:13px}
  .closePicker{grid-area:close;justify-self:end;width:34px;height:34px;font-size:20px}
  .filterToggle{grid-area:filter;display:flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 9px;border:1px solid #ffffff26;border-radius:8px;background:#151a20;color:#fff;font-size:13px;font-weight:700;cursor:pointer}
  .filterToggle span{font-size:15px;transition:transform .18s}.filterToggle.active span{transform:rotate(180deg)}
  .filterRows{display:none;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:9px}
  .filterRows.expanded{display:grid}
  .filterRow{position:relative;display:block;min-width:0}
  .filterLabel{display:none}
  .filterSelectToggle{display:flex;align-items:center;width:100%;height:38px;padding:0 8px;border:1px solid #ffffff22;border-radius:7px;background:#151a20;color:#fff;cursor:pointer;text-align:left}
  .filterSelectToggle span{min-width:0;font-size:12px;font-weight:700;white-space:nowrap}.filterSelectToggle small{margin-left:auto;padding-left:4px;color:var(--gold);font-size:10px;white-space:nowrap}.filterSelectToggle b{margin-left:5px;font-size:12px;transition:transform .18s}.filterRow.open .filterSelectToggle b{transform:rotate(180deg)}
  .filterOptions{position:absolute;z-index:12;top:calc(100% + 4px);left:0;display:none;min-width:132px;padding:5px;border:1px solid #ffffff26;border-radius:8px;background:#151a20;box-shadow:0 12px 30px #000d}
  .filterRow:nth-child(2) .filterOptions{left:50%;transform:translateX(-50%)}.filterRow:nth-child(3) .filterOptions{left:auto;right:0}
  .filterRow.open .filterOptions{display:grid;gap:3px}
  .filterOptions .filterChip{width:100%;padding:7px 9px;border-radius:5px;text-align:left}
  .pickerCount{flex:0 0 auto;padding:7px 12px 3px;font-size:11px}
  .characterGrid{flex:1 1 auto;height:auto;min-height:0;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;padding:7px 9px 14px;align-content:start}
  .characterCard{min-width:0;padding:3px;border-radius:7px;text-align:center}
  .cardAvatar{border-radius:7px}.characterCard b{margin-top:3px;font-size:11px;line-height:1.25}.characterCard small{display:block;font-size:9px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .empty{padding:50px 10px}
}

/* GameKee 评论组件会注入 body{min-width:1280px}，覆盖它以免 WAP 整页横向撑开。 */
html,
html body{
  min-width:0!important;
  width:100%!important;
  max-width:100%!important;
}
html,
body{overflow-x:hidden}
.page,
.commentPanel,
.commentMount,
#comment,
#comment>.gamekee-comment-plugin-root,
#comment .gamekee-page-comment{
  min-width:0!important;
  max-width:100%!important;
}

/* 评论组件深色化，与页面的黑金视觉保持一致。 */
#comment .gamekee-page-comment{
  width:100%!important;
  padding:18px!important;
  color:#dfe4e9!important;
  background:linear-gradient(180deg,rgba(20,24,30,.98),rgba(8,11,15,.98))!important;
  border:1px solid rgba(255,255,255,.1)!important;
  border-radius:10px!important;
  box-shadow:0 18px 48px rgba(0,0,0,.24)!important;
}
#comment .gamekee-page-comment .comment-title{color:#f2f3f5!important}
#comment .gamekee-page-comment .comment-editor{
  color:#e8ebee!important;
  background:#151a21!important;
  border:1px solid rgba(255,255,255,.1)!important;
}
#comment .comment-input{color:#e8ebee!important;background:transparent!important}
#comment .comment-input:empty:after{color:#7e8791!important}
#comment .comment-list,
#comment .detail-comment-send{color:#d8dde2!important}
#comment .gamekee-page-comment-item .user-name{
  color:#f5f7fa!important;
  text-shadow:0 1px 2px #000!important;
}
#comment .gamekee-page-comment-item .comment-content,
#comment .gamekee-page-comment-item .comment-content *{
  color:#eef2f6!important;
  text-shadow:0 1px 2px #0008!important;
}
#comment .gamekee-page-comment-item .meta,
#comment .gamekee-page-comment-item .comment-actions{color:#aeb8c3!important}
#comment .empty-box,
#comment .no-more{color:#8d969f!important}
#comment .load-more{
  color:#cbd0d5!important;
  background:#171c23!important;
  border:1px solid rgba(255,255,255,.08)!important;
}
#comment .tool-bar .cancel-btn{color:#cbd0d5!important;background:#20262e!important}
#comment .tool-bar .send-btn{
  color:#171000!important;
  background:linear-gradient(135deg,#ffd940,#e6a900)!important;
}

@media(max-width:760px){
  .commentPanel{
    min-height:0;
    width:100%;
    padding-bottom:max(18px,env(safe-area-inset-bottom));
    overflow:hidden;
  }
  .commentMount{min-height:0;width:100%;overflow:hidden}
  #comment .gamekee-page-comment{
    width:100%!important;
    padding:13px!important;
    border-radius:8px!important;
  }
  #comment .gamekee-page-comment .comment-editor{margin-bottom:14px!important}
  #comment .empty-box{min-height:0!important;padding:22px 0!important}
  #comment .empty-box img{width:72px!important;height:auto!important}
}

/* GameKee 登录面板原始宽度为 400px（另有 44px 内边距），WAP 改为视口内的紧凑布局。 */
@media(max-width:760px){
  .login-panel[data-v-f791c0a4]{
    box-sizing:content-box!important;
    left:-13px!important;
    width:calc(100vw - 76px)!important;
    max-width:314px!important;
    height:292px!important;
    padding:32px 16px 36px!important;
    border-radius:16px!important;
  }
  .login-panel[data-v-f791c0a4] .gamekee-logo{
    height:48px!important;
    top:-24px!important;
    max-width:80%!important;
    object-fit:contain!important;
  }
  .login-panel[data-v-f791c0a4] .login-close{
    width:24px!important;
    bottom:-31px!important;
  }
  .login-panel[data-v-f791c0a4] .dialog-content{border-radius:14px!important}
  .login-panel[data-v-f791c0a4] .container-title{
    padding:13px 0 8px!important;
    font-size:13px!important;
  }
  .login-panel[data-v-f791c0a4] .login-form{
    width:calc(100% - 28px)!important;
    margin:0 auto!important;
  }
  .login-panel[data-v-f791c0a4] .login-form .el-form-item,
  .login-panel[data-v-f791c0a4] .login-form .el-input,
  .login-panel[data-v-f791c0a4] .login-form .el-input__inner{
    width:100%!important;
    min-width:0!important;
  }
  .login-panel[data-v-f791c0a4] .login-form .el-form-item{margin-bottom:11px!important}
  .login-panel[data-v-f791c0a4] .login-btn{
    width:calc(100% - 28px)!important;
    height:34px!important;
    margin-top:7px!important;
  }
  .login-panel[data-v-f791c0a4] .el-divider--horizontal{
    width:calc(100% - 44px)!important;
    margin:14px auto 10px!important;
  }
  .login-panel[data-v-f791c0a4] .other-login-box{padding-top:8px!important}
  .login-panel[data-v-f791c0a4] .other-login-box .method-btn{
    width:30px!important;
    height:30px!important;
  }
  .login-panel[data-v-f791c0a4] .login-sign{
    width:calc(100% - 20px)!important;
    max-width:100%!important;
    justify-content:center!important;
    flex-wrap:wrap!important;
    white-space:normal!important;
    font-size:10px!important;
    line-height:15px!important;
    text-align:center!important;
  }
  .login-dialog{
    width:calc(100vw - 28px)!important;
    max-width:340px!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
}

@media(max-width:350px),(max-height:650px){
  .login-panel[data-v-f791c0a4]{
    transform:scale(.88)!important;
    transform-origin:center!important;
  }
}

/* 评论插件的全局 margin reset 会覆盖 dialog 的浏览器居中规则。 */
dialog{margin:auto!important}

/* 评论刷新时保留上一帧，避免组件清空/重绘造成“收起再展开”的闪烁。 */
.commentMount{position:relative}
.commentRefreshSnapshot{
  position:absolute!important;
  z-index:6;
  inset:0;
  width:100%!important;
  pointer-events:none!important;
  opacity:1;
  transition:opacity .12s ease;
}
.commentRefreshSnapshot.leaving{opacity:0}

/* 用官网角色素材替换评论组件默认空状态图标。 */
#comment .empty-box img{display:none!important}
#comment .empty-box:before{
  content:"";
  display:block;
  flex:0 0 auto;
  width:170px;
  height:150px;
  margin:0 auto 8px;
  background:var(--comment-empty,url("assets/comment-empty-doll.png")) center/contain no-repeat;
}
#comment .empty-box>span{font-size:0!important}
#comment .empty-box>span:after{content:"一大波DC玩家正在赶来";font-size:13px}
@media(max-width:760px){
  #comment .empty-box{padding:8px 0 max(68px,calc(env(safe-area-inset-bottom) + 52px))!important}
  #comment .empty-box:before{
    width:120px;
    height:120px;
    margin-bottom:3px;
  }
  #comment .empty-box>span:after{font-size:12px}
}

/* 图鉴入口中的纪念名单。名单固定四列完整呈现，不产生内部滚动条。 */
.pickerCountBar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 20px}
.pickerCountBar .pickerCount{padding:12px 2px 0}
.thanksButton{align-self:flex-end;height:34px;margin-top:7px;padding:0 16px;border:1px solid #8f681d;border-radius:7px;background:linear-gradient(145deg,#251d09,#0b0d10 75%);color:#f3f3f3;cursor:pointer;font-size:13px;font-weight:750;letter-spacing:.04em;box-shadow:inset 0 0 0 1px #000,0 6px 18px #0007;transition:.18s}
.thanksButton span{margin-right:5px;color:var(--gold)}
.thanksButton:hover{border-color:var(--gold);color:var(--gold);transform:translateY(-1px);box-shadow:inset 0 0 12px #ffc40018,0 0 14px #ffc40024}
#thanksDialog{width:min(980px,94vw)!important;height:fit-content!important;min-height:0!important;max-height:none!important;block-size:fit-content!important;border-color:#c8972c66;border-radius:18px;background:#07090c;color:#fff;overflow:hidden;box-shadow:0 0 0 100vmax #000d,0 30px 100px #000,0 0 45px #ffc40016}
#thanksDialog[open]{display:block!important}
#thanksDialog::backdrop{background:#0000}
.thanksFrame{position:relative;padding:22px 30px 18px;overflow:hidden;background:radial-gradient(circle at 17% 5%,#26334880,transparent 34%),linear-gradient(145deg,#121720 0,#080a0e 52%,#141005 100%)}
.thanksFrame:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.17;background-image:linear-gradient(120deg,transparent 0 46%,#ffc40018 46.2% 46.5%,transparent 46.7%),radial-gradient(circle at 1px 1px,#fff 1px,transparent 1.3px);background-size:auto,31px 31px;mask-image:linear-gradient(90deg,#000,transparent 72%)}
.thanksFrame:after{content:"";position:absolute;inset:7px;border:1px solid #d5a52638;border-radius:12px;pointer-events:none}
.closeThanks{position:absolute;z-index:3;top:15px;right:16px;width:38px;height:38px;border:1px solid #ffffff22;border-radius:50%;background:#ffffff0b;color:#d8dde2;cursor:pointer;font-size:24px;line-height:1;transition:.18s}
.closeThanks:hover{border-color:var(--gold);color:var(--gold);transform:rotate(90deg)}
.thanksHeader{position:relative;z-index:1;display:grid;grid-template-columns:260px 1fr;align-items:center;gap:28px;min-height:132px;padding:0 55px 8px 4px}
.thanksLogo{display:block;width:100%;max-height:122px;object-fit:contain;filter:drop-shadow(0 8px 20px #000)}
.thanksHeading{padding-left:28px;border-left:1px solid #d7a92f5c}
.thanksKicker{display:block;margin-bottom:3px;color:#d7a92f;font-size:10px;font-weight:800;letter-spacing:.22em}
.thanksHeading h2{margin:0;color:#fff;font-size:36px;line-height:1.15;letter-spacing:.12em;text-shadow:0 4px 18px #000}
.thanksHeading p{margin:8px 0 0;color:#aeb5bd;font-size:13px;letter-spacing:.05em}
.thanksRule{position:relative;z-index:1;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;margin:1px 0 13px;color:#d7a92f;font-size:9px;letter-spacing:.25em}
.thanksRule span{height:1px;background:linear-gradient(90deg,transparent,#d7a92f88)}
.thanksRule span:last-child{background:linear-gradient(90deg,#d7a92f88,transparent)}
.creditsGrid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:row;gap:3px 14px}
.creditsGrid span{min-width:0;min-height:22px;display:flex;align-items:center;justify-content:center;padding:2px 5px;border-bottom:1px solid #ffffff0b;color:#f3e5b7;font-size:13px;line-height:1.2;text-align:center;overflow-wrap:anywhere;opacity:0;animation:creditIn .42s ease forwards;animation-delay:calc(var(--credit-index) * 7ms)}
@keyframes creditIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.thanksFooter{position:relative;z-index:1;margin-top:13px;color:#9299a2;font-size:11px;letter-spacing:.13em;text-align:center}
@media(prefers-reduced-motion:reduce){.creditsGrid span{animation:none;opacity:1}}
@media(max-width:760px){
  .pickerCountBar{padding:0 9px 2px}
  .pickerCountBar .pickerCount{padding:7px 3px 3px}
  .thanksButton{height:30px;margin-top:3px;padding:0 9px;font-size:11px;white-space:nowrap}
  #thanksDialog{width:calc(100vw - 16px)!important;height:fit-content!important;max-height:none!important;block-size:fit-content!important;border-radius:14px}
  #thanksDialog[open]{display:block!important}
  .thanksFrame{padding:11px 12px 10px}
  .closeThanks{top:10px;right:10px;width:32px;height:32px;font-size:20px}
  .thanksHeader{grid-template-columns:128px 1fr;gap:10px;min-height:88px;padding:0 34px 3px 0}
  .thanksLogo{max-height:84px}
  .thanksHeading{padding-left:10px}
  .thanksKicker{font-size:6px;letter-spacing:.12em}
  .thanksHeading h2{font-size:23px;letter-spacing:.08em}
  .thanksHeading p{margin-top:4px;font-size:8px;line-height:1.35}
  .thanksRule{gap:8px;margin:0 0 6px;font-size:6px}
  .creditsGrid{gap:1px 4px}
  .creditsGrid span{min-height:15px;padding:1px;color:#f3e5b7;font-size:clamp(7.5px,2.15vw,10px);line-height:1.08;border-bottom-color:#ffffff08}
  .thanksFooter{margin-top:6px;font-size:7px;letter-spacing:.08em}
}
