@import "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;600;800;900&family=ZCOOL+KuaiLe&display=swap";@import "https://fonts.googleapis.com/css2?family=Noto+Sans+HK:wght@500;700;900&family=Oswald:wght@500;700&display=swap";:root{color:#f4f0e6;font-synthesis:none;--ink:#090e18;--paper:#eee7d7;--jade:#55e6c1;--gold:#ffd36b;--red:#ff5f5f;background:#090e18;font-family:Noto Sans SC,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 30% 0,#1b2a3b 0,#0000 35%),#090e18;min-width:320px;min-height:100vh;margin:0}button{font:inherit;color:inherit}button:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.topbar{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:20;background:#090e18df;border-bottom:1px solid #ffffff18;justify-content:space-between;align-items:center;height:74px;padding:0 clamp(20px,5vw,72px);display:flex;position:relative}.brand{text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;font-size:20px;font-weight:900;display:flex}.brand small{letter-spacing:2px;color:#8b98a9;font-size:8px;display:block}.seal{background:var(--red);color:#fff;border-radius:8px 3px;place-items:center;width:38px;height:38px;font-family:ZCOOL KuaiLe;font-size:25px;display:grid;box-shadow:0 0 20px #ff5f5f44}.topstats{align-items:center;gap:12px;display:flex}.topstats span,.topstats button{background:#ffffff08;border:1px solid #ffffff15;border-radius:12px;align-items:center;gap:7px;height:38px;padding:0 13px;font-size:13px;font-weight:700;display:flex}.topstats button{cursor:pointer;justify-content:center;width:38px;padding:0}.topstats svg{width:17px;color:var(--gold)}.eyebrow{text-transform:uppercase;letter-spacing:2px;color:var(--jade);font-size:12px;font-weight:800}.hero{grid-template-columns:1.1fr .9fr;min-height:calc(100vh - 210px);display:grid;position:relative;overflow:hidden}.hero-art{filter:saturate(.85);background:url(/assets/characters/lianjie.png) 50% 18%/cover no-repeat;-webkit-mask-image:linear-gradient(90deg,#000 70%,#0000);mask-image:linear-gradient(90deg,#000 70%,#0000)}.hero-art:after{content:"";background:linear-gradient(90deg,#0000 25%,#090e18 62%),linear-gradient(#0000 60%,#090e18);position:absolute;inset:0}.hero-copy{z-index:2;align-self:center;max-width:560px;padding:50px 7vw 50px 0}.hero h1{margin:18px 0 24px;font-family:ZCOOL KuaiLe;font-size:clamp(52px,6.7vw,92px);font-weight:400;line-height:.96}.hero h1 em{color:var(--gold);text-shadow:5px 5px #7b2530;font-style:normal}.hero-copy>p{color:#aeb7c4;max-width:480px;font-size:17px;line-height:1.8}.primary{background:var(--gold);color:#17130c;cursor:pointer;border:0;border-radius:13px;padding:15px 22px;font-weight:900;transition:all .2s;box-shadow:0 6px #9b6627}.primary:hover{transform:translateY(-2px);box-shadow:0 8px #9b6627}.primary.jumbo{align-items:center;gap:12px;width:min(390px,100%);margin:28px 0 24px;font-size:20px;display:flex}.primary.jumbo small{opacity:.7;margin-left:auto;font-size:11px;font-weight:600}.daily{color:#9aa6b5;background:#ffffff08;border:1px solid #ffffff12;border-radius:14px;grid-template-columns:32px 1fr;gap:3px 10px;max-width:390px;padding:12px;font-size:11px;display:grid}.daily svg{color:var(--jade);grid-row:1/3}.daily b{color:#fff}.daily i,.chapter-card i{background:#ffffff12;border-radius:4px;height:5px;overflow:hidden}.daily i{grid-column:2}.daily i b,.chapter-card i b{background:var(--jade);height:100%;display:block}.dock{z-index:5;background:#111a28;border:1px solid #ffffff12;border-radius:18px;grid-template-columns:repeat(3,1fr);max-width:920px;margin:-20px auto 36px;display:grid;position:relative;overflow:hidden;box-shadow:0 18px 60px #0009}.dock button{text-align:left;cursor:pointer;background:0 0;border:0;border-right:1px solid #ffffff10;grid-template-rows:1fr 1fr;grid-template-columns:40px 1fr;min-height:90px;padding:20px;display:grid}.dock svg{color:var(--jade);grid-row:1/3;align-self:center}.dock span{color:#748196;font-size:12px}.map-page{background:linear-gradient(90deg,#09111ee8,#09111e66),url(/assets/maps/xiguan-map.png) 50%/cover fixed;min-height:calc(100vh - 74px);padding:54px 7vw;position:relative}.map-page header h1,.collection h1{margin:8px 0;font-family:ZCOOL KuaiLe;font-size:56px}.map-page header p,.collection>p{color:#9faabb}.map-canvas{max-width:1100px;min-height:560px;position:relative}.level{text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:13px;display:flex;position:absolute}.level .pin{background:var(--jade);color:#10231e;border:5px solid #1f2b39;border-radius:50%;place-items:center;width:58px;height:58px;display:grid;box-shadow:0 0 0 5px #55e6c133,0 8px 20px #0009}.level.current .pin{background:var(--gold);width:72px;height:72px;animation:1.8s infinite pulse}.level.locked{filter:grayscale();opacity:.48;cursor:not-allowed}.level>div{background:#0b1421e8;border:1px solid #ffffff16;border-radius:10px;min-width:185px;padding:11px 16px;box-shadow:0 12px 30px #0009}.level small,.level em{color:#8792a2;font-size:10px;font-style:normal;display:block}.level b{font-size:17px;display:block}.stars{color:#3c4654;font-size:11px}.stars .on{color:var(--gold)}.level-1{bottom:6%;left:5%}.level-2{bottom:32%;left:22%}.level-3{bottom:16%;left:49%}.level-4{bottom:48%;left:61%}.level-5{bottom:73%;left:78%}.chapter-card{background:#101a28ed;border:1px solid #ffffff16;border-radius:16px;gap:8px;width:270px;padding:20px;display:grid;position:absolute;top:55px;right:6vw}.chapter-card>span{color:#9aa5b4;font-size:12px}.chapter-card>strong{font-size:30px}.chapter-card strong small{color:var(--gold);font-size:12px}.chapter-card p{color:#8995a4;font-size:11px}.battle-page{max-width:1440px;margin:auto;padding:26px clamp(18px,4vw,56px) 50px}.battle-head{justify-content:space-between;align-items:center;display:flex}.ghost{color:#8e9aab;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;display:inline-flex}.ghost svg{width:15px}.round{text-align:center;letter-spacing:3px;color:#8792a2;font-size:11px}.round b{color:#fff;font-size:18px}.round span{letter-spacing:1px;display:block}.battle-grid{grid-template-columns:1fr 250px;gap:18px;margin-top:18px;display:grid}.arena,.score-panel{background:#111a27;border:1px solid #ffffff12;border-radius:18px;overflow:hidden}.enemy{background:linear-gradient(90deg,#122638,#251b27);grid-template-columns:1fr 1fr;height:280px;display:grid;position:relative}.enemy:after{content:"";opacity:.12;background:linear-gradient(0deg,#111a27 0,#0000 40%),url(/assets/ui/card-atlas.png) 50%/cover;position:absolute;inset:0}.enemy-copy{z-index:2;align-self:center;padding-left:7%}.enemy h2{margin:5px 0;font-family:ZCOOL KuaiLe;font-size:48px}.enemy h2 small{color:#96a2b2;font:600 11px Noto Sans SC;display:block}.enemy blockquote{color:#c4ccd6;margin:15px 0;font-size:13px}.portrait{background-position:50% 20%;background-size:cover;position:relative;-webkit-mask-image:linear-gradient(90deg,#0000,#000 25%);mask-image:linear-gradient(90deg,#0000,#000 25%)}.speech-rings{color:var(--jade);font-size:28px;font-weight:900;position:absolute;top:25%;right:9%;transform:rotate(-14deg)}.healths{z-index:3;grid-template-columns:1fr 1fr;gap:40px;margin-top:-12px;padding:0 6%;display:grid;position:relative}.healths>div>span{color:#a6b0bd;font-size:11px}.bar{background:#202b39;border-radius:8px;height:15px;position:relative;overflow:hidden}.bar i{background:linear-gradient(90deg,#3cd3b4,#6fffcf);height:100%;transition:width .5s;display:block}.bar span{font-size:9px;line-height:15px;position:absolute;top:0;right:7px}.prompt-box{background:#090f18;border:1px solid #ffffff12;border-radius:13px;align-items:center;gap:13px;margin:20px 6% 8px;padding:14px;display:flex}.prompt-box>button{width:44px;height:44px;color:var(--jade);background:#55e6c114;border:1px solid #55e6c144;border-radius:50%}.prompt-box>div{flex:1}.prompt-box div span,.prompt-box small{color:#7f8a99;font-size:10px;display:block}.prompt-box strong{font-size:24px}.prompt-box strong em{color:var(--jade);margin-left:9px;font-size:12px;font-style:normal}.combo{color:var(--gold);gap:5px;font-size:13px;display:flex}.combo svg{width:16px}.status{text-align:center;color:#aab4c2;min-height:20px;font-size:12px}.mic-wrap{justify-content:center;align-items:center;gap:13px;padding:6px 0 22px;display:flex}.mic{background:var(--red);cursor:pointer;border:0;border-radius:50%;place-items:center;width:62px;height:62px;display:grid;box-shadow:0 0 0 8px #ff5f5f1e}.mic.recording{animation:1s infinite pulse}.mic.scoring svg{animation:1s linear infinite spin}.mic:disabled{opacity:.55}.mic-wrap div strong,.mic-wrap div span{display:block}.mic-wrap div span{color:#778394;font-size:10px}.score-panel{padding:23px}.big-score{color:var(--gold);margin:22px 0;font-size:64px;font-weight:900}.big-score small{font-size:13px}.score-row{grid-template-columns:35px 1fr 24px;align-items:center;gap:7px;margin:14px 0;font-size:11px;display:grid}.score-row i{background:#ffffff12;border-radius:4px;height:5px;overflow:hidden}.score-row i b{background:var(--jade);height:100%;display:block}.score-panel p{color:#8d98a7;margin-top:25px;font-size:11px;line-height:1.7}.score-empty{text-align:center;color:#657184;margin-top:60px}.score-empty>span{color:#273548;font:60px ZCOOL KuaiLe}.hand{margin-top:18px}.hand-title{color:#8f9aa9;justify-content:space-between;font-size:12px;display:flex}.hand-title b{color:var(--gold)}.cards{justify-content:center;gap:14px;margin-top:12px;display:flex}.game-card{--accent:#fff;border:1px solid color-mix(in srgb,var(--accent),transparent 55%);background:linear-gradient(160deg,color-mix(in srgb,var(--accent),#172131 88%),#0c121c 58%);text-align:left;cursor:pointer;border-radius:14px;flex-direction:column;width:180px;height:225px;padding:16px;transition:all .25s;display:flex;position:relative;box-shadow:0 12px 24px #0007}.game-card:before{content:"";background:var(--accent);border-radius:14px 14px 0 0;height:5px;position:absolute;inset:0 0 auto}.game-card:disabled{cursor:default}.game-card .rarity{color:var(--accent);letter-spacing:2px;font-size:9px}.game-card strong{margin-top:22px;font:46px ZCOOL KuaiLe}.game-card em{color:var(--accent);font-size:11px;font-style:normal}.game-card small{color:#8a96a5;font-size:10px}.card-rule{border-top:1px solid #ffffff12;margin-top:auto;padding-top:10px;font-size:10px}.game-card>i{background:var(--accent);color:#07100e;border-radius:50%;place-items:center;width:25px;height:25px;font-style:normal;font-weight:900;display:grid;position:absolute;top:12px;right:10px}.collection{padding:54px 7vw}.collection-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:25px;margin-top:50px;display:grid}.collection-grid .game-card{width:100%}.locked-card{color:#344050;border:1px dashed #ffffff20;border-radius:14px;place-items:center;height:225px;font-size:50px;display:grid}.locked-card span{font-size:10px}.overlay{z-index:50;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#050911db;place-items:center;display:grid;position:fixed;inset:0}.result{text-align:center;background:#121c2a;border:1px solid #ffffff1c;border-radius:22px;width:min(440px,90vw);padding:34px;box-shadow:0 30px 100px #000}.seal.big{width:70px;height:70px;margin:auto;font-size:48px;transform:rotate(-6deg)}.result h2{color:var(--gold);margin:20px 0 5px;font:42px ZCOOL KuaiLe}.reward{color:var(--gold);justify-content:center;gap:16px;margin:25px 0;font-size:12px;display:flex}.result .ghost{margin:18px auto 0;display:block}@keyframes pulse{50%{box-shadow:0 0 0 16px #0000}}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=800px){.topstats span{display:none}.hero{grid-template-columns:1fr}.hero-art{opacity:.35;position:absolute;inset:0;-webkit-mask-image:none;mask-image:none}.hero-art:after{background:linear-gradient(#0000,#090e18 80%)}.hero-copy{padding:70px 25px}.dock{margin:0 15px 30px}.dock button{text-align:center;flex-direction:column;align-items:center;padding:15px;display:flex}.dock span{display:none}.map-page{padding:35px 18px}.map-page header h1{font-size:44px}.chapter-card{margin-bottom:20px;position:static}.map-canvas{min-height:680px}.level-1{left:0}.level-2{bottom:27%;left:14%}.level-3{bottom:48%;left:0}.level-4{bottom:68%;left:20%}.level-5{bottom:88%;left:5%}.battle-grid{grid-template-columns:1fr}.score-panel{display:none}.enemy{grid-template-columns:1.2fr .8fr;height:230px}.enemy h2{font-size:40px}.healths{gap:10px}.cards{justify-content:flex-start;padding:14px;overflow-x:auto}.game-card{min-width:150px;height:205px}.topbar{padding:0 16px}.battle-page{padding:15px 10px}.round{display:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}:root{--hk-red:#f04432;--hk-yellow:#ffd447;--hk-cyan:#20e1d0;--hk-ink:#080b0c;--hk-paper:#e8dfc8}body{color:#f0e9da;background:#080b0c;font-family:Noto Sans HK,Noto Sans SC,sans-serif}body:before{content:"";pointer-events:none;z-index:100;opacity:.018;mix-blend-mode:screen;background:repeating-linear-gradient(0deg,#0000 0 3px,#fff 4px);position:fixed;inset:0}body:after{content:"";pointer-events:none;z-index:99;opacity:.035;background-image:radial-gradient(#fff .5px,#0000 .7px);background-size:4px 4px;position:fixed;inset:0}.topbar{border-bottom:4px solid var(--hk-yellow);background:#090b0cf2;height:68px;padding-inline:4vw;box-shadow:0 4px #000}.brand{font-weight:900;transform:skew(-5deg)}.brand small{letter-spacing:3px;color:var(--hk-yellow);font-family:Oswald}.seal{background:var(--hk-red);box-shadow:4px 4px 0 var(--hk-cyan);border-radius:0;transform:rotate(-3deg)}.topstats span,.topstats button{background:#111516;border:2px solid #373b3b;border-radius:0;box-shadow:3px 3px #000}.topstats svg{color:var(--hk-yellow)}.eyebrow{color:#07100f;background:var(--hk-cyan);letter-spacing:1px;box-shadow:4px 4px 0 var(--hk-red);padding:5px 10px;display:inline-block;transform:skew(-7deg)}.film-code{letter-spacing:4px;color:var(--hk-yellow);margin-bottom:18px;font:700 11px Oswald;display:block}.hero{background:#090c0d;grid-template-columns:1.05fr .95fr;min-height:calc(100vh - 154px)}.hero:before{content:"開聲！";z-index:3;color:#0000;-webkit-text-stroke:2px #ffd44733;pointer-events:none;font-size:clamp(70px,12vw,180px);font-weight:900;position:absolute;bottom:3vh;left:3vw;transform:rotate(-8deg)}.hero-art{filter:contrast(1.08)saturate(.86);background-image:url(/assets/characters/lianjie-hk-v2.png);background-position:50%;background-size:cover;-webkit-mask-image:linear-gradient(90deg,#000 70%,#0000);mask-image:linear-gradient(90deg,#000 70%,#0000)}.hero-art:after{background:linear-gradient(90deg,#0000 42%,#090c0d 92%),linear-gradient(0deg,#090c0d 0,#0000 32%)}.hero-copy{padding-top:42px}.hero h1{letter-spacing:-6px;text-shadow:6px 6px #000;font-family:Noto Sans HK,sans-serif;font-size:clamp(54px,6.2vw,92px);font-weight:900;line-height:.9;transform:rotate(-1deg)}.hero h1 em{color:var(--hk-yellow);text-shadow:7px 7px 0 var(--hk-red);-webkit-text-stroke:1px #1b0f09}.hero-copy>p{border-left:7px solid var(--hk-red);color:#cec6b3;padding-left:16px}.primary{background:var(--hk-yellow);box-shadow:8px 8px 0 var(--hk-red);clip-path:polygon(0 0,96% 0,100% 28%,100% 100%,4% 100%,0 72%);border:3px solid #111;border-radius:0}.primary:hover{box-shadow:11px 11px 0 var(--hk-red)}.daily{background:#131717;border:2px solid #565349;border-radius:0;box-shadow:5px 5px #000}.ticker{white-space:nowrap;background:var(--hk-red);color:#090b0c;letter-spacing:2px;border-block:3px solid #080b0c;height:34px;font-weight:900;line-height:28px;overflow:hidden}.ticker span{min-width:200%;animation:18s linear infinite ticker;display:inline-block}.dock{background:var(--hk-paper);color:#111;box-shadow:10px 10px 0 var(--hk-red);border:3px solid #080b0c;border-radius:0;margin:0 auto 30px}.dock button{border-right:3px solid #111}.dock button:hover{background:var(--hk-yellow)}.dock svg{color:var(--hk-red)}.dock span{color:#5d574b}.map-page{background:linear-gradient(90deg,#050809dd,#05080922),url(/assets/maps/kowloon-night-v2.png) 50%/cover fixed;padding-top:42px}.map-page:after{content:"KOWLOON NIGHT RUN";color:#ffd44722;letter-spacing:5px;font:700 72px Oswald;position:absolute;bottom:70px;right:-40px;transform:rotate(-8deg)}.map-page header h1,.collection h1{letter-spacing:-4px;text-shadow:5px 5px 0 var(--hk-red);font-family:Noto Sans HK;font-weight:900}.level .pin{background:var(--hk-cyan);box-shadow:5px 5px 0 var(--hk-red);border:4px solid #070909;border-radius:0;transform:rotate(45deg)}.level .pin svg{transform:rotate(-45deg)}.level.current .pin{background:var(--hk-yellow);box-shadow:7px 7px 0 var(--hk-red);border-radius:0}.level>div{color:#101213;box-shadow:7px 7px 0 var(--hk-red);clip-path:polygon(0 0,96% 0,100% 16%,100% 100%,0 100%);background:#e8dfc8;border:3px solid #080b0c;border-radius:0}.level small,.level em{color:#665e4e}.chapter-card{background:var(--hk-yellow);color:#111;box-shadow:8px 8px 0 var(--hk-red);border:3px solid #090b0c;border-radius:0;transform:rotate(1deg)}.chapter-card>span,.chapter-card p{color:#473d2d}.arena,.score-panel{background:#111718;border:3px solid #030404;border-radius:0;box-shadow:7px 7px #000}.enemy{background:#15191a}.enemy:after{opacity:.22;mix-blend-mode:screen;background-image:linear-gradient(90deg,#060909 0,#0000 46%),url(/assets/ui/card-atlas-hk-v2.png);background-size:auto,cover}.enemy-copy{border-left:8px solid var(--hk-red);margin-left:5%}.enemy h2{color:var(--hk-yellow);text-shadow:5px 5px 0 var(--hk-red);font-family:Noto Sans HK;font-weight:900}.portrait{filter:contrast(1.1)saturate(.9)}.speech-rings{color:var(--hk-cyan);text-shadow:3px 3px #000}.bar{border:2px solid #080b0c;border-radius:0;height:18px}.bar i{background:var(--hk-cyan)}.bar.red i{background:var(--hk-red)}.prompt-box{box-shadow:4px 4px 0 var(--hk-red);background:#080b0c;border:2px solid #706b5c;border-radius:0}.mic{background:var(--hk-red);box-shadow:7px 7px 0 var(--hk-yellow);border:4px solid #060708;border-radius:0;transform:rotate(45deg)}.mic svg{transform:rotate(-45deg)}.mic-wrap div strong{color:var(--hk-yellow)}.score-panel{background:var(--hk-paper);color:#121313}.score-panel .eyebrow{color:#080b0c}.score-panel p{color:#504b41}.score-row i{background:#c6bda6}.score-row i b{background:var(--hk-red)}.big-score{color:var(--hk-red);text-shadow:3px 3px 0 var(--hk-yellow)}.game-card{background-image:linear-gradient(150deg,color-mix(in srgb,var(--accent),#151919 85%),#080a0a 65%),url(/assets/ui/card-atlas-hk-v2.png);background-blend-mode:normal,soft-light;clip-path:polygon(0 0,92% 0,100% 8%,100% 100%,8% 100%,0 92%);border:3px solid #050707;border-radius:0;box-shadow:7px 7px #000}.game-card:before{background:repeating-linear-gradient(90deg,var(--accent) 0 18px,#e8dfc8 18px 35px,#2459b5 35px 52px);border-radius:0;height:9px}.game-card:hover:not(:disabled),.game-card.active{box-shadow:9px 9px 0 var(--accent);transform:translate(-3px,-13px)rotate(-1deg)}.game-card strong{text-shadow:3px 3px #000;font-family:Noto Sans HK;font-weight:900}.game-card>i{border:2px solid #080b0c;border-radius:0;transform:rotate(45deg);box-shadow:2px 2px #000}.collection{background:linear-gradient(#080b0cef,#080b0cef),url(/assets/maps/kowloon-night-v2.png) 50%/cover fixed;min-height:calc(100vh - 68px)}.locked-card{border:3px dashed var(--hk-yellow);border-radius:0}.overlay{background:#050707e8}.result{background:var(--hk-paper);color:#111;box-shadow:12px 12px 0 var(--hk-red);border:4px solid #070808;border-radius:0}.result h2{color:var(--hk-red);text-shadow:3px 3px 0 var(--hk-yellow);font-family:Noto Sans HK;font-weight:900}.result p{color:#554f44}.result .ghost{color:#222}@keyframes ticker{to{transform:translate(-50%)}}@media (width<=800px){.hero-art{opacity:.5;background-position:58%;-webkit-mask-image:none;mask-image:none}.hero-copy{padding-top:52px}.hero h1{letter-spacing:-4px}.ticker{margin-top:-1px}.map-page:after{display:none}.enemy-copy{margin-left:1%;padding-left:4%}.game-card{min-width:158px}}@media (prefers-reduced-motion:reduce){.ticker span{animation:none}}.enemy h2{margin-bottom:20px}.enemy h2 small{color:#d5cdbb;text-shadow:none;margin-top:7px}.enemy blockquote{margin-top:0;line-height:1.6}.hk-world{background:#080b0c url(/assets/maps/hong-kong-full-v3.png) 50%/cover no-repeat;min-height:calc(100vh - 68px);position:relative;overflow:hidden}.hk-world:after{content:"";pointer-events:none;background:radial-gradient(circle at 55%,#0000 30%,#060808cc 90%);position:absolute;inset:0}.world-map-title{z-index:5;width:310px;position:absolute;top:5vh;left:4vw}.world-map-title h1{text-shadow:5px 5px #f04432;margin:8px 0 16px;font-size:48px;line-height:.95}.world-map-title p{color:#bdb5a4}.hk-map-board{z-index:3;position:absolute;inset:0}.district-pin{color:#090b0c;cursor:pointer;background:#e8dfc8;border:0;padding:5px 8px 5px 20px;font-size:12px;font-weight:900;position:absolute;transform:translate(-50%,-50%);box-shadow:4px 4px #080b0c}.district-pin i{background:#20e1d0;border:4px solid #080b0c;width:22px;height:22px;position:absolute;top:50%;left:-7px;transform:translateY(-50%)rotate(45deg)}.district-pin:hover,.district-pin.selected{z-index:4;background:#ffd447;box-shadow:6px 6px #f04432}.district-pin.selected i{background:#f04432;animation:1.5s infinite pulse}.region-label{color:#e8dfc828;letter-spacing:10px;pointer-events:none;font-size:54px;font-weight:900;position:absolute;transform:rotate(-8deg)}.region-label.nt{top:8%;left:50%}.region-label.kl{top:43%;left:43%}.region-label.hk{top:80%;left:53%}.region-label.is{top:72%;left:13%}.travel-card{z-index:6;color:#111;clip-path:polygon(0 0,94% 0,100% 8%,100% 100%,6% 100%,0 92%);background:#e8dfc8;border:4px solid #080b0c;width:280px;padding:22px;position:absolute;bottom:5vh;right:4vw;box-shadow:10px 10px #f04432}.travel-card>span{letter-spacing:2px;color:#a63125;font:700 11px Oswald}.travel-card h2{margin:4px 0 0;font-size:40px}.travel-card p{color:#5e5547;margin:0 0 18px;font-weight:900}.travel-card>div{border-block:1px dashed #8c816e;align-items:center;gap:8px;padding:10px 0;font-size:12px;display:flex}.travel-card>div svg{width:18px}.travel-card .primary{width:100%;margin:18px 0 10px}.travel-card small{color:#746b5d;font-size:9px;line-height:1.5;display:block}.street-page{background:linear-gradient(#0a0e0fe8,#0a0e0fe8),url(/assets/ui/card-atlas-hk-v2.png) 50%/cover;min-height:calc(100vh - 68px);padding:18px 4vw 30px}.street-toolbar{color:#999d99;align-items:center;gap:22px;max-width:1100px;margin:0 auto 12px;font-size:12px;display:flex}.street-toolbar span{align-items:center;gap:6px;display:flex}.street-toolbar svg{width:16px}.street-shell{background:#111;border:5px solid #060808;max-width:1100px;margin:auto;position:relative;overflow:hidden;box-shadow:10px 10px #f04432}.street-shell canvas{image-rendering:auto;width:100%;height:auto;display:block}.npc-prompt{color:#111;background:#e8dfc8;border:4px solid #080b0c;align-items:center;gap:13px;width:min(610px,90%);padding:14px 16px;display:flex;position:absolute;bottom:22px;left:50%;transform:translate(-50%);box-shadow:7px 7px #ffd447}.npc-prompt>svg{color:#f04432}.npc-prompt div{flex-direction:column;flex:1;display:flex}.npc-prompt small{color:#6b6254}.npc-prompt b{font-size:21px}.npc-prompt span{font-size:11px}.npc-prompt button{color:#fff;cursor:pointer;background:#f04432;border:3px solid #080b0c;align-items:center;gap:6px;padding:12px;font-weight:900;display:flex}.npc-prompt button svg{width:17px}.street-quest{color:#a9aaa3;background:#111718;border-left:8px solid #20e1d0;align-items:center;gap:18px;max-width:1100px;margin:17px auto 0;padding:14px 18px;display:flex}.street-quest b{color:#ffd447}.street-quest i{color:#20e1d0;margin-left:auto;font-size:11px;font-style:normal}.touch-pad{width:126px;height:126px;display:none;position:absolute;bottom:18px;left:18px}.touch-pad button{color:#ffd447;background:#080b0cbb;border:2px solid #ffd447;width:42px;height:42px;position:absolute}.touch-pad button:first-child{left:42px}.touch-pad button:nth-child(2){top:42px}.touch-pad button:nth-child(3){top:84px;left:42px}.touch-pad button:nth-child(4){top:42px;left:84px}@media (width<=800px){.hk-world{background-position:58%;min-height:calc(100vh - 68px)}.world-map-title{top:24px;left:18px}.world-map-title h1{font-size:34px}.world-map-title p{display:none}.district-pin{padding:3px 5px 3px 14px;font-size:9px}.district-pin i{width:16px;height:16px}.travel-card{width:230px;padding:15px;bottom:20px;right:18px}.travel-card h2{font-size:30px}.region-label{display:none}.street-page{padding:10px 0}.street-toolbar{padding:0 10px}.street-toolbar span:nth-child(3){display:none}.street-shell{border-width:3px}.touch-pad{display:block}.npc-prompt{width:55%;padding:8px;bottom:10px;left:auto;right:10px;transform:none}.npc-prompt>svg,.npc-prompt span{display:none}.npc-prompt button{padding:8px;font-size:10px}.street-quest{margin:12px 10px}.street-quest i{display:none}}.street-shell.real-map{background:#101616;max-width:960px}.real-map canvas{width:100%;height:auto}.map-loading{color:#ffd447;letter-spacing:2px;z-index:8;background:#071010e8;place-items:center;font-weight:900;display:grid;position:absolute;inset:0}.map-loading.error{color:#ff695b}.real-map .npc-prompt{z-index:4}.street-shell.real-map:after{content:"12-DIRECTION STREET MODE";color:#ffd44755;letter-spacing:2px;pointer-events:none;font:700 10px Oswald;position:absolute;top:62px;right:10px}.duel-page{background:linear-gradient(#060909e8,#060909f4),url(/assets/ui/card-atlas-hk-v2.png) 50%/cover fixed;min-height:calc(100vh - 68px);padding:18px 3vw 40px}.duel-toolbar{justify-content:space-between;align-items:center;max-width:1380px;height:44px;margin:auto;display:flex}.duel-toolbar>div{text-align:center}.duel-toolbar span{color:#20e1d0;letter-spacing:3px;font:700 10px Oswald;display:block}.duel-toolbar b{font-size:17px}.duel-table{background:radial-gradient(circle at 50% 39%,#243630 0,#111817 34%,#080b0c 70%);border:4px solid #050707;max-width:1380px;min-height:790px;margin:auto;position:relative;overflow:hidden;box-shadow:10px 10px #f04432}.duel-table:before{content:"";opacity:.025;pointer-events:none;background:repeating-radial-gradient(circle at 50% 39%,#0000 0 34px,#fff 35px 36px);position:absolute;inset:0}.fighter{z-index:2;align-items:center;gap:16px;display:flex;position:absolute}.ai-fighter{height:190px;top:24px;left:28px;right:28px}.player-fighter{bottom:282px;left:28px}.fighter-portrait{background-color:#1b2422;background-repeat:no-repeat;border:4px solid #080b0c;width:150px;height:150px;box-shadow:7px 7px #f04432}.fighter-portrait.ai{background-image:url(/assets/characters/lianjie-hk-v2.png);background-position:28%;background-size:cover}.fighter-portrait.player{background-image:url(/assets/characters/sprites/hero-12dir-v1.png);background-position:0 0;background-size:400% 300%}.ai-badge{color:#20e1d0;background:#080b0c;align-items:center;gap:5px;padding:4px 7px;font:700 10px Oswald;display:flex;position:absolute;top:7px;left:7px}.ai-badge svg{width:13px}.fighter-info{width:300px}.fighter-info>span{color:#99a49f;letter-spacing:1px;font-size:10px}.fighter-info h2{color:#ffd447;text-shadow:4px 4px #f04432;margin:2px 0 9px;font-size:40px}.duel-meter{align-items:center;gap:8px;display:flex}.duel-meter>div{background:#242b29;border:2px solid #050707;width:190px;height:15px}.duel-meter i{background:#f04432;height:100%;display:block}.player-fighter .duel-meter i{background:#20e1d0}.duel-meter b{font-size:12px}.duel-meter span{color:#20e1d0;align-items:center;gap:3px;font-size:11px;display:flex}.duel-meter svg{width:13px}.ai-intent{color:#111;background:#e8dfc8;border:2px solid #5e584a;grid-template-columns:24px 1fr;align-items:center;width:180px;margin-left:auto;padding:12px;display:grid;box-shadow:5px 5px #ffd447}.ai-intent svg{color:#f04432;grid-row:1/3}.ai-intent span{color:#6d6250;font-size:9px}.ai-intent b{font-size:13px}.ai-hand{display:flex;position:absolute;top:0;left:50%;transform:translate(-50%)}.ai-hand .duel-card{transform:scale(.55) rotate(var(--r,0deg));transform-origin:top;margin-left:-62px}.ai-hand .duel-card:first-child{margin-left:0}.duel-center{text-align:center;z-index:3;width:min(550px,48vw);position:absolute;top:235px;left:50%;transform:translate(-50%)}.turn-seal{color:#111;background:#ffd447;border:4px solid #080b0c;padding:8px 18px;font-weight:900;display:inline-block;transform:rotate(-2deg);box-shadow:5px 5px #f04432}.duel-message{color:#e8dfc8;margin:18px 0 10px;font-size:13px}.mini-score{justify-content:center;gap:8px;font-size:10px;display:flex}.mini-score span,.mini-score b{background:#131a19;border:1px solid #414b47;padding:5px 7px}.mini-score b{color:#ffd447}.pending-hit{text-align:left;background:#f04432;border:3px solid #080b0c;grid-template-columns:30px 1fr 80px;width:300px;margin:12px auto;padding:10px;display:grid}.pending-hit svg{grid-row:1/3}.pending-hit span{font-size:9px}.pending-hit b{font-size:16px}.pending-hit strong{grid-area:1/3/3;align-self:center}.duel-log{text-align:left;border-left:4px solid #20e1d0;max-height:112px;margin-top:15px;padding-left:12px;overflow:hidden}.duel-log p{color:#8f9994;margin:4px 0;font-size:10px}.duel-log p.good{color:#72d9c9}.duel-log p.bad{color:#f48778}.energy{color:#111;background:#ffd447;border:3px solid #080b0c;place-items:center;width:70px;height:70px;margin-left:15px;display:grid;box-shadow:5px 5px #f04432}.energy b{font-size:32px;line-height:25px}.energy span{font-size:9px}.duel-hand{background:#0a0e0eee;border-top:4px solid #f04432;height:275px;padding:11px 20px;position:absolute;bottom:0;left:0;right:0}.hand-head{color:#919c97;justify-content:space-between;align-items:center;font-size:11px;display:flex}.hand-head span{color:#ffd447;align-items:center;gap:6px;font-weight:900;display:flex}.hand-head svg{width:16px}.duel-cards{justify-content:center;align-items:flex-end;gap:9px;height:186px;padding:8px 4px 3px;display:flex;overflow-x:auto}.duel-card{--card-color:#ffd447;background:linear-gradient(160deg,color-mix(in srgb,var(--card-color),#171b1a 88%),#0b0d0d);color:#eee6d6;text-align:left;clip-path:polygon(0 0,91% 0,100% 8%,100% 100%,8% 100%,0 92%);cursor:pointer;border:3px solid #050707;width:132px;min-width:132px;height:174px;padding:10px;transition:all .15s;position:relative;box-shadow:5px 5px #000}.duel-card:hover:not(:disabled),.duel-card.selected{box-shadow:5px 5px 0 var(--card-color);outline:2px solid var(--card-color);transform:translateY(-8px)}.duel-card:disabled{filter:grayscale(.8);opacity:.48;cursor:not-allowed}.duel-card-top{color:var(--card-color);justify-content:space-between;font-size:9px;font-weight:900;display:flex}.duel-card-top svg{width:16px;height:16px}.duel-card>strong{margin-top:12px;font-size:22px;display:block}.duel-card>em{color:var(--card-color);font-size:9px;font-style:normal;display:block}.duel-card>small{color:#86918b;font-size:9px}.duel-card>p{border-top:1px solid #ffffff18;padding-top:7px;font-size:8px;line-height:1.5}.duel-card>i{color:var(--card-color);font-size:8px;font-style:normal;position:absolute;bottom:8px;right:8px}.duel-card.card-back{background:repeating-linear-gradient(45deg,#8f271f 0 8px,#121515 8px 16px);border-color:#d8b94d;place-items:center;display:grid}.duel-card.card-back span{color:#ffd447;text-shadow:3px 3px #080b0c;font-size:48px;font-weight:900}.duel-actions{gap:8px;display:flex;position:absolute;bottom:12px;right:20px}.duel-actions button{cursor:pointer;border:2px solid #050707;align-items:center;gap:6px;height:42px;padding:0 15px;font-weight:900;display:flex}.duel-actions button:disabled{opacity:.35;cursor:not-allowed}.duel-actions svg{width:16px}.listen-btn{color:#20e1d0;background:#171d1c}.voice-btn,.response-btn{color:#fff;background:#f04432;box-shadow:4px 4px #ffd447}.end-btn,.pass-btn{color:#111;background:#e8dfc8}.duel-result{z-index:60;background:#050707dd;place-items:center;display:grid;position:fixed;inset:0}.duel-result>div{text-align:center;color:#111;background:#e8dfc8;border:4px solid #080b0c;width:min(430px,90vw);padding:32px;box-shadow:12px 12px #f04432}.duel-result h2{color:#f04432;margin:16px 0 5px;font-size:36px}.duel-result p{color:#5e574b}.duel-result .ghost{color:#333;margin:18px auto 0;display:block}@media (width<=900px){.duel-page{padding:8px}.duel-table{min-height:840px}.ai-fighter{left:12px;right:12px}.fighter-portrait{width:105px;height:105px}.fighter-info{width:190px}.fighter-info h2{font-size:29px}.fighter-info>span{display:none}.ai-intent{width:135px}.ai-hand{display:none}.duel-center{width:90%;top:205px}.player-fighter{bottom:300px;left:14px}.duel-hand{height:292px;padding:8px}.duel-cards{justify-content:flex-start;height:205px}.duel-card{min-width:125px}.duel-actions{bottom:8px;right:8px}.duel-actions button{padding:0 9px;font-size:10px}.hand-head small{text-align:right;max-width:60%}.energy{width:55px;height:55px}.duel-log{max-height:70px}}@media (height<=800px) and (width>=901px){.duel-page{height:calc(100vh - 68px);padding:4px 3vw;overflow:hidden}.duel-toolbar{height:34px}.duel-table{height:calc(100vh - 110px);min-height:590px}.ai-fighter{height:120px;top:9px}.fighter-portrait{width:104px;height:104px}.fighter-info h2{margin-bottom:4px;font-size:29px}.fighter-info>span{display:none}.duel-meter>div{width:160px}.ai-hand{transform-origin:top;top:-7px;transform:translate(-50%)scale(.78)}.ai-intent{padding:8px}.duel-center{top:145px}.duel-center .duel-message{margin:10px 0 6px}.duel-log{max-height:54px;margin-top:8px}.duel-log p{margin:2px 0}.player-fighter{bottom:203px}.duel-hand{height:198px;padding:5px 16px}.duel-cards{height:142px}.duel-card{width:112px;min-width:112px;height:137px;padding:7px}.duel-card>strong{margin-top:6px;font-size:18px}.duel-card>p{display:none}.duel-card>i{bottom:5px}.duel-actions{bottom:7px}.duel-actions button{height:34px}.hand-head{height:20px}.energy{width:58px;height:58px}.pending-hit{margin:6px auto}}.voice-notice{font-weight:800;color:#ffd447!important}.duel-toolbar-actions{gap:8px;display:flex}.duel-toolbar-actions .ghost,.duel-toolbar>.ghost{align-items:center;gap:5px;display:flex}.duel-toolbar-actions svg,.duel-toolbar>.ghost svg{width:15px}.fighter-stage{--fighter-accent:#ffd447;border-bottom:4px solid var(--fighter-accent);background:radial-gradient(ellipse at 50% 92%,color-mix(in srgb,var(--fighter-accent),transparent 45%),transparent 68%);filter:drop-shadow(8px 8px #0008);isolation:isolate;flex:0 0 210px;width:210px;height:190px;position:relative}.fighter-stage:before{content:"";filter:blur(4px);z-index:-1;background:#000c;border-radius:50%;height:17px;position:absolute;bottom:-5px;left:8%;right:8%}.ai-stage{--fighter-accent:var(--ai-accent)}.player-stage{--fighter-accent:var(--player-accent)}.fighter-cutout{object-fit:contain;object-position:center bottom;filter:drop-shadow(0 8px 5px #000b);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:225px;animation:3.2s ease-in-out infinite fighter-breathe;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.fighter-skill{z-index:4;border:1px solid var(--fighter-accent);color:var(--fighter-accent);letter-spacing:1px;background:#080b0ce8;padding:4px 8px;font-size:9px;font-weight:900;position:absolute;bottom:3px;right:2px;transform:rotate(-2deg)}.fighter-stage .ai-badge{z-index:5;top:3px;left:3px}.fighter-info h2{white-space:nowrap}.fighter-quote{border-left:3px solid var(--fighter-accent,#ffd447);color:#cfc7b6;background:#080b0ca8;max-width:270px;margin:9px 0 0;padding:7px 9px;font-size:10px;line-height:1.35}.ai-fighter .fighter-info{--fighter-accent:var(--ai-accent)}.player-fighter .fighter-info{--fighter-accent:var(--player-accent)}.active-technique{text-align:left;background:#111817e8;border:2px solid #ffd447;grid-template-rows:auto auto;grid-template-columns:24px 1fr;width:238px;margin:10px auto 0;padding:7px 11px;animation:.22s ease-out technique-pop;display:grid;transform:rotate(-1deg);box-shadow:5px 5px #000}.active-technique svg{color:#ffd447;grid-row:1/3;align-self:center}.active-technique span{color:#8b9791;letter-spacing:1px;font-size:8px}.active-technique strong{color:#f1e9da;font-size:16px}.active-technique em{color:#20e1d0;grid-column:2;font-size:8px}.active-technique.from-ai{border-color:#f04432;box-shadow:5px 5px #ffd447}.active-technique.from-ai svg{color:#f04432}.duel-card>:not(.duel-card-owner){z-index:2;position:relative}.duel-card-owner{object-fit:contain;object-position:center bottom;opacity:.28;filter:saturate(.8)contrast(1.08);pointer-events:none;z-index:0;width:92px;height:126px;position:absolute;bottom:-2px;right:-12px;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 28%);mask-image:linear-gradient(90deg,#0000 0,#000 28%)}.duel-card.selected .duel-card-owner,.duel-card:hover:not(:disabled) .duel-card-owner{opacity:.56;transform-origin:100% 100%;transform:scale(1.06)}.duel-card-owner-name{color:#e8dfc888;letter-spacing:1px;font-size:7px;bottom:7px;left:9px;position:absolute!important}.duel-card>i{z-index:3}.phase-pronouncing .player-stage{animation:.7s cubic-bezier(.2,.8,.2,1) player-lunge}.phase-player_response .ai-stage{animation:.58s cubic-bezier(.2,.8,.2,1) ai-lunge}.fighter.is-hit .fighter-cutout{animation:.48s ease-out fighter-hit}.duel-table.impact-ai:after,.duel-table.impact-player:after{content:"";z-index:12;pointer-events:none;animation:.42s ease-out impact-flash;position:absolute;inset:0}.duel-table.impact-ai:after{background:radial-gradient(circle at 18% 18%,#fff8 0 2%,#f0443266 5%,#0000 24%)}.duel-table.impact-player:after{background:radial-gradient(circle at 18% 60%,#fff8 0 2%,#f0443266 5%,#0000 24%)}.character-select-overlay{z-index:80;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#030505ec;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.character-select-panel{color:#f0e8d8;background:linear-gradient(145deg,#161d1b,#080b0c 70%);border:4px solid #050707;width:min(1240px,96vw);max-height:94vh;padding:22px;overflow:auto;box-shadow:13px 13px #f04432}.character-select-panel>header{border-bottom:2px solid #343c39;justify-content:space-between;align-items:flex-end;gap:24px;padding:0 4px 17px;display:flex}.character-select-panel>header>div:first-child>span{color:#20e1d0;letter-spacing:3px;font:700 10px Oswald}.character-select-panel h2{color:#ffd447;text-shadow:3px 3px #f04432;margin:5px 0 2px;font-size:32px}.character-select-panel header p{color:#8f9994;margin:0;font-size:11px}.versus-preview{align-items:center;gap:10px;display:flex}.versus-preview>span{color:#f04432;font:900 20px Oswald}.versus-preview button{text-align:left;color:#e8dfc8;cursor:pointer;background:#101513;border:2px solid #4d5551;grid-template-rows:17px 20px;grid-template-columns:25px 1fr;align-items:center;min-width:142px;height:56px;padding:6px 9px;display:grid}.versus-preview button.active{border-color:#ffd447;box-shadow:4px 4px #f04432}.versus-preview svg{color:#20e1d0;grid-row:1/3;width:18px}.versus-preview small{color:#7f8b86;font-size:8px}.versus-preview b{font-size:13px}.character-roster{grid-template-columns:repeat(6,minmax(130px,1fr));gap:12px;padding:18px 0;display:grid}.character-card{--character-accent:#ffd447;background:linear-gradient(165deg,color-mix(in srgb,var(--character-accent),#111 82%),#090b0b 60%);color:#eee5d3;text-align:left;cursor:pointer;clip-path:polygon(0 0,92% 0,100% 6%,100% 100%,8% 100%,0 94%);border:3px solid #080b0c;min-width:0;height:286px;padding:0;transition:transform .16s,filter .16s,box-shadow .16s;position:relative;overflow:hidden;box-shadow:5px 5px #000}.character-card:hover{filter:brightness(1.13);box-shadow:6px 8px 0 var(--character-accent);transform:translateY(-7px)}.character-card.is-player{outline:3px solid #20e1d0;box-shadow:6px 6px #20e1d0}.character-card.is-ai{outline:3px solid #f04432;box-shadow:6px 6px #f04432}.character-card-role{z-index:4;color:var(--character-accent);letter-spacing:1px;background:#050707;padding:4px 7px;font:800 8px Oswald;position:absolute;top:8px;left:8px}.character-card-art{background:radial-gradient(circle at 50% 70%,color-mix(in srgb,var(--character-accent),transparent 52%),transparent 65%);place-items:end center;display:grid;position:absolute;inset:10px 2px 63px}.character-card-art img{object-fit:contain;object-position:center bottom;filter:drop-shadow(4px 6px #0009);width:100%;height:100%;transition:transform .18s}.character-card:hover .character-card-art img{transform:scale(1.045)}.character-card-copy{z-index:3;border-top:3px solid var(--character-accent);background:linear-gradient(90deg,#080b0cf5,#111817ed);height:72px;padding:8px 10px;position:absolute;bottom:0;left:0;right:0}.character-card-copy small,.character-card-copy strong,.character-card-copy em{display:block}.character-card-copy small{color:#8d9892;font-size:8px}.character-card-copy strong{font-size:19px;line-height:22px}.character-card-copy em{color:var(--character-accent);font-size:9px;font-style:normal;font-weight:800}.character-card-stats{z-index:4;gap:4px;display:flex;position:absolute;top:8px;right:7px}.character-card-stats span{color:#e8dfc8;background:#080b0c;align-items:center;gap:2px;padding:3px 4px;font-size:8px;display:flex}.character-card-stats svg{width:9px;height:9px}.character-card-check{z-index:5;background:var(--character-accent);color:#080b0c;border:2px solid #080b0c;place-items:center;width:25px;height:25px;display:grid;position:absolute;bottom:7px;right:7px}.character-card-check svg{width:14px}.character-select-panel>footer{border-top:2px solid #343c39;justify-content:space-between;align-items:center;gap:20px;padding-top:15px;display:flex}.character-select-panel>footer div b,.character-select-panel>footer div span{display:block}.character-select-panel>footer div b{color:#ffd447}.character-select-panel>footer div span{color:#89948f;font-size:10px}.start-duel-btn{cursor:pointer;justify-content:center;align-items:center;gap:8px;min-width:300px;height:50px;font-weight:900;display:flex}.start-duel-btn svg{width:18px}@keyframes fighter-breathe{50%{transform:translate(-50%)translateY(-3px)}}@keyframes player-lunge{0%,to{transform:translate(0)}45%{transform:translate(58px,-5px)scale(1.05)}}@keyframes ai-lunge{0%,to{transform:translate(0)}45%{transform:translate(54px,8px)scale(1.05)}}@keyframes fighter-hit{0%{filter:drop-shadow(0 8px 5px #000b);transform:translate(-50%)}25%{filter:brightness(2)sepia()saturate(5)drop-shadow(0 0 14px #f04432);transform:translate(calc(-50% - 16px))rotate(-3deg)}55%{transform:translate(calc(9px - 50%))rotate(2deg)}to{transform:translate(-50%)}}@keyframes impact-flash{0%{opacity:1}to{opacity:0}}@keyframes technique-pop{0%{opacity:0;transform:translateY(10px)rotate(-1deg)scale(.9)}}@media (width<=1100px){.character-roster{grid-template-columns:repeat(3,1fr)}.character-card{height:250px}.character-select-panel{max-height:96vh}.fighter-stage{flex-basis:175px;width:175px}.fighter-cutout{height:205px}.fighter-info{width:240px}}@media (width<=900px){.duel-toolbar-actions .ghost{padding-inline:7px}.fighter-stage{flex-basis:132px;width:132px;height:145px}.fighter-cutout{height:162px}.fighter-skill{padding:3px 5px;font-size:7px}.fighter-quote{display:none}.ai-fighter{height:165px}.player-fighter{bottom:300px}.active-technique{width:205px;margin-top:6px}.character-select-overlay{padding:8px}.character-select-panel{padding:13px}.character-select-panel>header{display:block}.versus-preview{justify-content:center;margin-top:12px}.character-select-panel>footer{z-index:10;background:#0b0f0eee;margin:0 -13px -13px;padding:10px 13px;position:sticky;bottom:-13px}.start-duel-btn{min-width:250px}.character-card{height:230px}}@media (width<=600px){.duel-toolbar>div:nth-child(2) span{display:none}.duel-toolbar-actions .ghost{font-size:0}.duel-toolbar-actions .ghost svg{width:18px;height:18px}.ai-intent{position:absolute;top:0;right:0}.fighter-info h2{font-size:24px}.duel-meter>div{width:150px}.character-roster{grid-template-columns:repeat(2,1fr);gap:9px}.character-card{height:238px}.versus-preview button{min-width:118px}.character-select-panel h2{font-size:25px}.character-select-panel header p{display:none}.character-select-panel>footer{display:block}.character-select-panel>footer>div{display:none}.start-duel-btn{width:100%;min-width:0;margin-top:0}.duel-card-owner{opacity:.22}}@media (height<=800px) and (width>=901px){.fighter-stage{flex-basis:135px;width:135px;height:115px}.fighter-cutout{height:140px}.fighter-skill{font-size:7px}.fighter-quote{display:none}.active-technique{margin-top:3px;padding-block:4px}.character-select-panel{padding:12px}.character-select-panel>header{padding-bottom:8px}.character-select-panel h2{font-size:25px}.character-roster{padding:9px 0}.character-card{height:205px}.character-select-panel>footer{padding-top:8px}}@media (prefers-reduced-motion:reduce){.fighter-cutout,.fighter-stage,.fighter.is-hit .fighter-cutout,.active-technique,.character-card,.character-card-art img{transition:none!important;animation:none!important}}.hero-art{filter:contrast(1.08)saturate(.9);background-image:url(/assets/characters/duel/hong-sheng-jiu-cutout.webp),url(/assets/characters/duel/shou-feng-sir-cutout.webp),radial-gradient(circle at 55% 65%,#f0443255,#0000 58%);background-position:88% 100%,15% 105%,50%;background-repeat:no-repeat;background-size:58%,54%,cover}
