/* Upgrade name typography: never flatten ordinary or legacy names. */
.pfx-stroke:is(.pfx-water-dragon-gl,.pfx-panda-storm-gl,.pfx-lage-bloom-gl,.pfx-paladin-inferno-gl){position:relative;display:inline-block;z-index:110;background:transparent!important;isolation:isolate;overflow:visible;font-weight:800;line-height:1.25;paint-order:stroke fill;animation:pfxNameLustre 2.6s ease-in-out infinite alternate}
.pfx-water-dragon-gl{font-family:'PfxMaShanZheng','KaiTi',serif!important;font-size:1.28em;letter-spacing:.06em;color:#b7ffff!important;text-shadow:0 1px 2px #063846,0 0 6px #087986,0 0 13px #8debd2}
.pfx-water-dragon-gl.pfx-on-light{color:#166a66!important;text-shadow:0 1px 0 #fff,0 0 5px #6de7cd,0 0 11px #9befdc}
.pfx-panda-storm-gl{font-family:'PfxZcoolXiaoWei','KaiTi',serif!important;color:#b7e8ff!important;text-shadow:0 1px 2px #082c55,0 0 6px #3397ff,0 0 12px #91d6ff}
.pfx-panda-storm-gl.pfx-on-light{color:#244cb2!important;text-shadow:0 1px 0 #fff,0 0 6px #65b8ff,0 0 12px #b7dbff}
.pfx-paladin-inferno-gl{font-family:'PfxMaShanZheng','KaiTi',serif!important;font-size:1.22em;color:#ffe4a8!important;text-shadow:0 1px 2px #50260b,0 0 6px #ea8a22}
.pfx-paladin-inferno-gl.pfx-on-light{color:#9b4c11!important;text-shadow:0 1px 0 #fff,0 0 5px #ffc261,0 0 9px #ffe8ab}
.pfx-lage-bloom-gl{font-family:'PfxZcoolXiaoWei','KaiTi',serif!important;color:#ffcfeb!important;text-shadow:0 1px 2px #5f254b,0 0 7px #e27dc4}
.pfx-lage-bloom-gl.pfx-on-light{color:#ad367e!important;text-shadow:0 1px 0 #fff,0 0 6px #ffc9e3,0 0 12px #ffe2f0}
@keyframes pfxNameLustre{from{filter:brightness(1)}to{filter:brightness(1.22)}}
.pfx-water-dragon-gl .pfx-dragon-letter{font:inherit;display:inline-block;opacity:0;transform:translateY(.14em);transition:opacity .16s,transform .2s}
.pfx-water-dragon-gl .pfx-dragon-letter.is-visible{opacity:1;transform:translateY(0)}
.pfx-panda-storm-gl.is-zapped{animation:pfxPandaZap .36s steps(2,end) 1!important}
.pfx-webgl-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none!important;z-index:90;contain:strict}
.pfx-water-dragon-gl>.pfx-edge,.pfx-panda-storm-gl>.pfx-edge,.pfx-lage-bloom-gl>.pfx-edge,.pfx-paladin-inferno-gl>.pfx-edge{display:none}
.pfx-dragon-form-label{display:none}
.pfx-gl-poem{position:fixed;z-index:2000;pointer-events:none;font:700 20px/1.12 'PfxMaShanZheng','KaiTi',serif;letter-spacing:.12em;color:#ffdfa1;text-shadow:0 1px 2px #392409,0 0 5px #f7b64e}
.pfx-gl-poem[hidden]{display:none}
.pfx-gl-poem>span{position:absolute;top:-2.9em;writing-mode:vertical-rl;white-space:nowrap}
.pfx-gl-poem>span:first-child{left:calc(-1 * var(--pfx-poem-gap,3em))}
.pfx-gl-poem>span:last-child{right:calc(-1 * var(--pfx-poem-gap,3em));color:#aee6ff}
.pfx-gl-poem>span>span{display:inline-block;font:inherit;opacity:0;transition:opacity .2s}
.pfx-gl-poem>span>span.is-visible{opacity:1}
.pfx-gl-poem[data-pfx-on-light]>span{color:#855017;text-shadow:0 1px 0 #fff,0 0 4px #fff2c9}
.pfx-gl-poem[data-pfx-on-light]>span:last-child{color:#286b8d}
.pfx-storm-magnet.is-upgrade{width:54px!important;height:54px!important;font-size:0!important;background:center/contain no-repeat url('/assets/player-effects/webgl-v1/taiji-v36.svg')!important;border:0!important;box-shadow:0 0 12px #64c2c66b!important;cursor:grab;touch-action:none;pointer-events:auto;z-index:2147483001}
.pfx-storm-magnet.is-upgrade:active{cursor:grabbing;filter:drop-shadow(0 0 7px #5bcaff)}
.pfx-storm-hint{position:fixed;z-index:2147483002;left:50%;bottom:12px;transform:translateX(-50%);max-width:calc(100vw - 40px);padding:7px 12px;border-radius:30px;background:#153a3ce8;color:#f8e5b2;font:12px/1.4 system-ui;white-space:nowrap;pointer-events:none}
.pfx-storm-hint[hidden]{display:none}
@media(max-width:760px){.pfx-gl-poem{font-size:14px!important;line-height:1.08}.pfx-gl-poem>span{top:-2.7em}.pfx-storm-magnet.is-upgrade{width:46px!important;height:46px!important}.pfx-storm-hint{font-size:10px;bottom:5px;padding:5px 9px}}
@media(prefers-reduced-motion:reduce){.pfx-stroke{animation:none!important}}



/* Cloudfall terraces: cool jade lettering, pearl water and hand-painted stone. */
.pfx-gl-host[data-pfx-webgl="water-dragon-gl"]{--pfx-glow:#7bcac0}
.pfx-gl-host[data-pfx-webgl="lage-bloom-gl"]{--pfx-glow:#a8d9b9}
.pfx-gl-poem>span:last-child{color:#9ee2db}

/* Poems belong to the entire card, never the narrow name span. */
.pfx-gl-poem[data-edge-poem]>span{top:-.5em;line-height:1.02}
.pfx-gl-poem[data-edge-poem]>span:first-child{left:-.28em}
.pfx-gl-poem[data-edge-poem]>span:last-child{right:-.28em}
@media(max-width:760px){.pfx-gl-poem[data-edge-poem]{font-size:13px!important}.pfx-gl-poem[data-edge-poem]>span{top:-.48em}}

.pfx-lage-bloom-gl>.pfx-pt{display:none!important}
.pfx-stroke:is(.pfx-water-dragon-gl,.pfx-panda-storm-gl,.pfx-lage-bloom-gl,.pfx-paladin-inferno-gl){white-space:nowrap}

.pfx-water-dragon-gl>.pfx-dragon-cloud-layer{opacity:.18}
.pfx-water-dragon-gl.is-dragon-cloudy>.pfx-dragon-cloud-layer{opacity:.75}
.pfx-water-dragon-gl.is-dragon-cloud-portal>.pfx-dragon-cloud-layer{opacity:0}
.pfx-dragon-cloud-portal.is-visible{filter:drop-shadow(0 1px 1px #497b8380)}
.pfx-dragon-cloud{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20180%2064%22%20fill%3D%22none%22%3E%0A%20%20%3Cdefs%3E%0A%20%20%20%20%3ClinearGradient%20id%3D%22ink%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%22180%22%20y2%3D%220%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%0A%20%20%20%20%20%20%3Cstop%20stop-color%3D%22%23174a60%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%20%20%3Cstop%20offset%3D%22.18%22%20stop-color%3D%22%231f5c75%22%20stop-opacity%3D%22.54%22%2F%3E%0A%20%20%20%20%20%20%3Cstop%20offset%3D%22.65%22%20stop-color%3D%22%23307f9c%22%20stop-opacity%3D%22.58%22%2F%3E%0A%20%20%20%20%20%20%3Cstop%20offset%3D%221%22%20stop-color%3D%22%231b627d%22%20stop-opacity%3D%220%22%2F%3E%0A%20%20%20%20%3C%2FlinearGradient%3E%0A%20%20%3C%2Fdefs%3E%0A%20%20%3Cpath%20d%3D%22M3%2047c17-10%2030-5%2039-13%207-6%202-17%2013-19%208-2%2015%203%2015%2010-1%207-9%209-12%204-2-4%202-7%205-6m-8%2016c15-2%2022-13%2032-11%2011%201%2013%2013%207%2018-5%204-12%201-11-4%200-3%204-5%207-3m2%209c13-10%2024-13%2035-8%209%204%2015%204%2024%200%2010-5%2017-4%2026%202%22%20stroke%3D%22url%28%23ink%29%22%20stroke-width%3D%223.2%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M9%2053c20-5%2029%200%2045-4%2012-3%2021-9%2035-6%2014%202%2025%2010%2040%204%2017-7%2034-2%2045%201%22%20stroke%3D%22url%28%23ink%29%22%20stroke-opacity%3D%22.48%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M46%2029c-1-8%205-15%2013-17m43%2020c7-6%2013-5%2019-2m17%205c9-6%2017-7%2024-2%22%20stroke%3D%22url%28%23ink%29%22%20stroke-opacity%3D%22.55%22%20stroke-width%3D%221.4%22%20stroke-linecap%3D%22round%22%2F%3E%0A%3C%2Fsvg%3E%0A")}

/* V48 fixed weather seal: quiet breathing, stronger flashes when called. */
.pfx-storm-magnet.is-upgrade{cursor:pointer!important;touch-action:manipulation;animation:pfxTaijiBreathe 3.2s ease-in-out infinite}
.pfx-storm-magnet.is-upgrade.is-calling{animation:pfxTaijiCall .38s ease-in-out 6}
@keyframes pfxTaijiBreathe{0%,100%{filter:drop-shadow(0 0 2px #91cdd6);opacity:.83}50%{filter:drop-shadow(0 0 6px #50aada);opacity:1}}
@keyframes pfxTaijiCall{0%,100%{filter:drop-shadow(0 0 3px #6da7c7);opacity:1}50%{filter:drop-shadow(0 0 12px #b4f2ff);opacity:.55}}

/* V49 larger poems breathe beyond the row; leave an inner margin and score clearance. */
.pfx-gl-poem[data-edge-poem]{font-size:30px!important;letter-spacing:.08em}
.pfx-gl-poem[data-edge-poem]>span{top:-.9em;line-height:1.08}
.pfx-gl-poem[data-edge-poem]>span:first-child{left:100px}
.pfx-gl-poem[data-edge-poem]>span:last-child{right:110px}
@media(max-width:760px){.pfx-gl-poem[data-edge-poem]{font-size:22px!important}.pfx-gl-poem[data-edge-poem]>span{top:-1.1em}.pfx-gl-poem[data-edge-poem]>span:first-child{left:100px}.pfx-gl-poem[data-edge-poem]>span:last-child{right:82px}}
.pfx-storm-magnet.is-upgrade.is-calling{animation:pfxTaijiCall .55s ease-in-out infinite}

/* Font family must reach columns as well as letters: the site styles every span. */
.pfx-gl-poem,.pfx-gl-poem>span,.pfx-gl-poem>span>span{font-family:'PfxMaShanZheng','KaiTi',serif!important;font-weight:400!important;font-style:normal!important;font-synthesis:none}
.pfx-gl-poem>span,.pfx-gl-poem>span>span{font-size:inherit!important}

/* A small root light is the only falling-blossom trigger; it leaves scores and names free. */
.pfx-plum-stump{position:fixed;z-index:140;border:0!important;padding:0!important;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#fff5b9 0,#ffc3d877 34%,#f5a9d100 72%)!important;color:#fff7c4!important;box-shadow:0 0 7px #e99dc488!important;font:14px/1 serif!important;cursor:pointer;pointer-events:auto;touch-action:manipulation;animation:pfxPlumRootGlow 2.8s ease-in-out infinite}
.pfx-plum-stump[hidden]{display:none!important}
.pfx-plum-stump:focus-visible{outline:2px solid #bc678b;outline-offset:3px}
.pfx-plum-stump:active{transform:scale(.88)}
@keyframes pfxPlumRootGlow{0%,100%{opacity:.82;filter:drop-shadow(0 0 4px #ffe7ae)}50%{opacity:1;filter:drop-shadow(0 0 8px #ef90b5)}}
@media(prefers-reduced-motion:reduce){.pfx-plum-stump{animation:none}}

/* V55: the root has a visible warm core on snow, not only a pale shadow. */
.pfx-plum-stump[data-glow="soft-core"]{background:radial-gradient(circle,#ffe9aa99 0,#efaf635e 22%,#e1a06420 47%,#e1a06400 72%)!important;box-shadow:none!important;animation:pfxStumpSoftPulse 2.6s ease-in-out infinite;filter:none}
.pfx-plum-stump[data-glow="soft-core"]::after{content:"";position:absolute;left:50%;top:50%;width:4px;height:4px;transform:translate(-50%,-50%);border-radius:50%;background:#fff4be;box-shadow:0 0 2px 1px #b8753c,0 0 6px 3px #f0ba6999,0 0 11px 5px #edbc6c44;pointer-events:none}
@keyframes pfxStumpSoftPulse{0%,100%{opacity:.76;filter:brightness(.92)}50%{opacity:1;filter:brightness(1.18)}}
@media(prefers-reduced-motion:reduce){.pfx-plum-stump[data-glow="soft-core"]{animation:none;opacity:.92}}

/* Stump discoverability: a brief invitation every fourteen seconds. */
.pfx-plum-stump .pfx-stump-arrow{position:absolute;left:50%;top:24%;z-index:2;transform:translate(-50%,-50%);font:700 18px/1 system-ui!important;color:#ffe6a1;text-shadow:0 1px 2px #664326,0 0 4px #fff7d9;pointer-events:none;opacity:0;animation:pfxStumpArrowInvite 14s ease-in-out infinite}
.pfx-plum-stump .pfx-stump-hint{position:absolute;left:50%;bottom:calc(100% + 5px);z-index:3;transform:translateX(-50%);width:max-content;max-width:180px;padding:5px 8px;border:1px solid #e7c8ad;border-radius:7px;background:#fff8ecf5;color:#704b35;box-shadow:0 2px 7px #36271b22;font:500 11px/1.35 system-ui,'Microsoft YaHei',sans-serif!important;letter-spacing:.02em;white-space:nowrap;pointer-events:none;opacity:0;animation:pfxStumpTextInvite 14s ease-in-out infinite}
.pfx-plum-stump .pfx-stump-hint::after{content:'';position:absolute;left:50%;top:100%;transform:translateX(-50%);border:4px solid transparent;border-top-color:#e7c8ad}
.pfx-plum-stump:is(:hover,:focus-visible) :is(.pfx-stump-arrow,.pfx-stump-hint){animation:none;opacity:1}
.pfx-plum-stump.pfx-hint-muted :is(.pfx-stump-arrow,.pfx-stump-hint){animation:none;opacity:0}
@keyframes pfxStumpArrowInvite{0%,9%,29%,100%{opacity:0;transform:translate(-50%,-65%)}12%,18%,24%{opacity:1;transform:translate(-50%,-35%)}15%,21%{opacity:.25;transform:translate(-50%,-65%)}27%{opacity:1;transform:translate(-50%,-35%)}}
@keyframes pfxStumpTextInvite{0%,9%,29%,100%{opacity:0}12%,26%{opacity:1}}
@media(prefers-reduced-motion:reduce){.pfx-plum-stump .pfx-stump-arrow{animation:pfxStumpTextInvite 14s ease-in-out infinite}}
