/* Generated by work/build-styles-v15-8.py; edit original stylesheets. */
/* style.css */
*{box-sizing:border-box} :root{--gold:#d7b272;--cream:#f7e5bb;--mint:#a5d7bc;--wood:#36271d;--dark:#191512}body{margin:0;background:radial-gradient(ellipse at 35% 40%,#3a2b24,#131211 75%);color:var(--cream);font-family:'Microsoft YaHei',sans-serif;min-height:100vh}button{font:inherit;color:inherit;border:0;cursor:pointer}button:disabled{cursor:not-allowed;filter:saturate(.25);opacity:.55}button:focus-visible,a:focus-visible{outline:2px solid #b5fddd;outline-offset:3px}[hidden]{display:none!important}.desktop-note{position:fixed;top:35%;left:calc(50% - 500px);max-width:235px}.desktop-note>span{font:12px Georgia;letter-spacing:7px;color:#c09c74}.desktop-note b{display:block;font:27px 'Microsoft YaHei';margin:18px 0}.desktop-note p{font-size:12px;color:#a99985}.desktop-note small{display:block;margin-top:50px;font-size:10px;letter-spacing:1px;color:#796a58}#app{width:440px;height:880px;position:relative;margin:24px auto;overflow:hidden;box-shadow:0 0 0 2px #7d593c,0 0 0 7px #201913,0 22px 80px #000a;background:#241b16}.screen{position:absolute;inset:0;overflow:hidden;isolation:isolate}header{display:flex;align-items:center;gap:10px;padding:19px 22px;position:relative;z-index:3}.seal{font-weight:900;background:#cda56b;color:#38251e;padding:2px 8px;font-size:24px;box-shadow:3px 3px #38221b,inset 0 0 0 2px #e5c28a}.mini{font:8px/1.7 Georgia,serif;letter-spacing:2px;color:#d8be93}.icon{width:30px;height:30px;background:#34261bc9;border:1px solid #926b46;color:#ead3a7;font-size:21px;display:grid;place-content:center}.sound{margin-left:auto;font-size:16px}.home-art,.vignette,.battle-back,.select-bg{position:absolute;inset:0;z-index:-2;pointer-events:none}.home-art{background:url('../assets/room.v9-1.webp') center 42%/cover;image-rendering:pixelated;animation:breathe 7s ease-in-out infinite}.vignette{z-index:-1;background:linear-gradient(#100e10c9,transparent 40%,transparent 58%,#1a1312ee 89%,#1a1312)}.home-title{text-align:center;margin-top:8px}.home-title p{font-size:10px;letter-spacing:3px;color:#d4b890}.home-title h1{font-weight:1000;line-height:1.15;font-size:42px;margin:14px 0 0;transform:rotate(-4deg);text-shadow:3px 3px #7d4934,5px 5px #211519;-webkit-text-stroke:1px #e6c49b}.home-title strong{font-size:89px;color:#ec8074;text-shadow:3px 3px #a93e3b,6px 7px #321b18;-webkit-text-stroke:1px #f4b090;letter-spacing:7px}.home-title strong span{color:#ffd28d}.ribbon{font-size:10px;letter-spacing:3px;padding:6px 20px;background:#342319d9;border-block:1px solid #a17d50;display:inline-block;margin-top:14px}.home-bubble{position:absolute;top:51%;right:20px;background:#f2ddb0;color:#634236;padding:12px;font-size:12px;font-weight:bold;box-shadow:3px 3px #855f41;transform:rotate(3deg)}.home-bubble:after{content:'';border:7px solid transparent;border-top-color:#f2ddb0;position:absolute;left:20px;bottom:-14px}.home-actions{position:absolute;left:24px;right:24px;bottom:22px}.gold-button{width:100%;background:linear-gradient(#d4a05f,#966035);border:2px solid #f2cf8a;box-shadow:inset 0 0 0 3px #865329,inset 0 5px #efc084,0 5px #4a2b1b,0 6px 0 1px #9c7347;font-size:23px;font-weight:900;padding:15px 19px;text-shadow:1px 2px #704725;transition:filter .2s,transform .2s}.gold-button:hover{filter:brightness(1.16)}.gold-button:active{transform:translateY(3px)}.gold-button>span{float:right}.secondary-row{display:flex;gap:12px;margin-top:22px}.secondary-row button{flex:1;padding:10px;background:#2e3025;border:1px solid #a48756;box-shadow:inset 0 0 0 2px #1c211b;font-size:12px}.secondary-row small{margin-left:12px;color:#b4c7a2;font:10px Georgia}.home-footer{display:flex;justify-content:space-between;font-size:8px;color:#a38c71;margin-top:19px;letter-spacing:1px}.teaser-cards{position:absolute;bottom:183px;left:50%;display:flex;transform:translateX(-50%);align-items:center}.mini-card{width:78px;height:96px;border:4px ridge #c0955b;box-shadow:0 4px 10px #000;transform:rotate(-15deg);background-color:#bda675}.mini-card:nth-child(2){transform:translateY(-13px);z-index:1}.mini-card:nth-child(3){transform:rotate(15deg)}.art{background-image:url('../cards/六张卡牌.v9-1.webp');background-size:334% 379%;background-position:var(--x) var(--y);image-rendering:pixelated}.select-bg{background:radial-gradient(ellipse at 50% 40%,#604535,#221b15 70%)}.select-heading{padding:0 24px;text-align:center}.select-heading p{color:#be9b71;font-size:10px;letter-spacing:4px}.select-heading h2{font-size:27px;margin:9px 0 18px}#hero-preview{height:290px;margin:0 30px;border:2px solid #a77d50;position:relative;overflow:hidden;box-shadow:inset 0 0 0 3px #31291f,0 10px 30px #0006}#hero-portrait{position:absolute;inset:0;background-color:#403426}#hero-portrait.chouchou{background:url('../assets/room.v9-1.webp') center 37%/100% auto;image-rendering:pixelated}.hero-caption{position:absolute;bottom:0;padding:35px 20px 14px;width:100%;background:linear-gradient(transparent,#1d1713 60%)}.hero-caption small{color:#c5bd8b;font-size:9px;letter-spacing:3px}.hero-caption h2{font-size:29px;margin:2px 0}.hero-caption p{font-size:11px;color:#cdb494;margin:0}#hero-options{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 30px}#hero-options button{padding:5px;background:#2d251e;border:1px solid #7a5d3e;font-size:10px}#hero-options .avatar{display:block;height:50px;margin-bottom:5px}#hero-options button.selected{border:2px solid #a6e6c4;box-shadow:0 0 13px #85d5a54d}.avatar.chouchou,#player-avatar.chouchou{background:url('../assets/room.v9-1.webp') 50% 35%/200% auto;image-rendering:pixelated}.skill-preview{display:flex;gap:15px;align-items:center;padding:13px 18px;margin:0 30px;background:#293026;border:1px solid #667a53}.skill-preview>span{font:bold 26px Georgia;color:#c6eed7}.skill-preview b{font-size:14px}.skill-preview p{margin:3px 0 0;color:#b2b99f;font-size:11px}.select-bottom{position:absolute;bottom:27px;left:30px;right:30px}.select-bottom p{font-size:11px;color:#bcaa8f}.select-bottom p span{float:right;font-size:9px}.battle-back{background:repeating-linear-gradient(1deg,#37271e 0,#37271e 40px,#30221a 42px,#3d2b21 45px);box-shadow:inset 0 0 70px #160f0c}#battle{display:flex;flex-direction:column}.battle-header{height:40px;flex-shrink:0;padding:6px 12px;border-bottom:1px solid #80603a;background:#221b14;font-size:11px;gap:8px}.battle-header .icon{height:24px;width:24px;font-size:16px}.battle-header .sound{margin-left:0}.match-type{font-size:8px;color:#a98a62;margin-left:auto}.enemy-hero{position:relative;display:block;height:178px;flex-shrink:0;overflow:hidden;background:#231c16;padding:0;text-align:left}.enemy-portrait{position:absolute;inset:0;background:url('../assets/room.v9-1.webp') center 40%/100% auto;image-rendering:pixelated;animation:breathe 6s ease-in-out infinite}.enemy-hero:after{content:'';position:absolute;inset:60% 0 0;background:linear-gradient(transparent,#22170ac4);pointer-events:none}.enemy-name{position:absolute;bottom:13px;left:16px;font-size:16px;text-shadow:1px 2px #000;z-index:1}.enemy-name small{display:block;font-size:8px;color:#d9b67c}.enemy-resource{position:absolute;bottom:11px;right:14px;background:#24190fcc;padding:4px 7px;font-size:9px;z-index:2}#speech{position:absolute;right:11px;top:34px;max-width:156px;background:#f4ddb2;color:#64412f;font-size:11px;font-weight:bold;border:2px solid #ae804f;padding:8px;z-index:2;box-shadow:2px 2px #241810}#speech:after{content:'';position:absolute;border:6px solid transparent;border-top-color:#f4ddb2;bottom:-12px;left:13px}.heat-panel{display:flex;align-items:center;gap:8px;padding:7px 13px;background:#21190f;border-block:2px ridge #ac8148;flex-shrink:0;font-size:10px}.heat-panel>span{color:#f4826e}.heat-panel b{white-space:nowrap;font:13px Georgia}.heat-track{height:10px;background:#171410;border:1px solid #785a34;flex:1}.heat-track i{height:100%;display:block;width:0;transition:width .3s;background:repeating-linear-gradient(90deg,#e37757 0 10px,#9d4736 10px 12px)}.board{flex:1;min-height:250px;display:flex;flex-direction:column;padding:8px 14px 4px;border-inline:5px ridge #7b5735;background:radial-gradient(ellipse,#69492b38,transparent);position:relative}.board-label{display:flex;justify-content:space-between;color:#a48864;font-size:8px;letter-spacing:1px;margin-bottom:6px}.board-label small{font-size:8px}.board-label.friendly{margin:5px 0 0}.unit-row{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;flex:1;min-height:89px}.slot{min-height:85px;background:#1e1b162e;border:1px solid #775735;box-shadow:inset 0 0 0 3px #3b2a20;position:relative;display:grid;place-items:center;max-height:124px;align-self:center;width:100%;aspect-ratio:1/1.1}.slot:empty:after{content:'✧';font-size:35px;color:#a1804538}.unit{width:100%;height:100%;position:absolute;inset:0;padding:0;background:#a08452;border:3px ridge #c79960;box-shadow:0 4px 4px #150e0ba3;transition:transform .18s}.unit .art{position:absolute;inset:0 0 15px;background-size:334% 320%}.unit.guard{border-color:#b4c2a2;box-shadow:0 0 0 2px #729e8c,0 4px 6px #1a1713}.unit.ready{box-shadow:0 0 0 1px #80d3ac,0 0 13px #72db9b66}.unit.selected{outline:3px solid #c2ffdf;transform:translateY(-5px)}.unit-name{position:absolute;top:0;left:0;right:0;background:#251c12cf;padding:3px 0;font-size:9px;text-shadow:1px 1px #000}.stat{position:absolute;bottom:-5px;width:23px;height:26px;font:bold 19px/24px Georgia;text-shadow:2px 2px #352011;border:2px ridge #dcb676;z-index:1}.attack{left:-6px;background:#b88a3e;transform:rotate(-5deg)}.health{right:-6px;background:#943c29;transform:rotate(5deg)}.unit-state{position:absolute;bottom:1px;left:20px;right:20px;font-size:7px;color:#e5e8c2}.board-middle{height:43px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;margin:5px -5px;border-block:1px solid #8d673840}.turn-mark>span{font-size:13px;color:#bbdcc1}.turn-mark small{display:block;font-size:8px;color:#b69b74;margin-top:3px;max-width:225px}#end-turn{background:linear-gradient(#b08748,#805626);border:2px ridge #d3aa68;font-weight:bold;font-size:11px;padding:9px 7px;box-shadow:0 2px #382614}#end-turn span{margin-left:4px;font-size:8px}.player-dock{display:flex;align-items:center;gap:9px;padding:9px 15px 5px;height:66px;flex-shrink:0;background:linear-gradient(#33291c,#231e15);border-top:3px ridge #a57b45}#player-avatar{height:45px;width:45px;flex-shrink:0;border:3px ridge #c39c65;border-radius:50%}.player-info{flex:1}.player-info>b{display:block;font-size:12px}.player-info>span{display:block;font-size:9px;color:#df9b7b;margin:4px 0}.player-info .heat-track{height:6px;max-width:125px}#hero-skill{background:#26362a;border:1px solid #8a9e6f;padding:7px 9px;box-shadow:inset 0 0 0 2px #1b251d}#hero-skill small{display:block;font-size:7px;color:#a4b692;margin-bottom:4px}#hero-skill b{font-size:11px}.mana-row{display:flex;justify-content:space-between;align-items:center;height:29px;flex-shrink:0;padding:0 15px;background:#241c12;border-bottom:1px solid #665032;font-size:8px;color:#b19a70}.mana-row>div{display:flex;align-items:center;gap:6px}.mana-row b{color:#d9e8bf;font:14px Georgia}#mana-gems{display:flex;gap:3px}#mana-gems i{display:inline-block;height:13px;width:9px;background:#244d38;border:1px solid #73936b;transform:skewY(-12deg)}#mana-gems i.full{background:#a7e3bb;box-shadow:0 0 6px #9de8b955}#hand{position:relative;height:156px;flex-shrink:0;display:flex;justify-content:center;align-items:flex-end;padding:10px 13px 1px;background:linear-gradient(#241c12,#19160f);touch-action:pan-y}.card{position:relative;width:103px;height:141px;flex-shrink:0;padding:0;background:#dcc39a;border:3px ridge #ba955d;border-radius:6px;box-shadow:2px 5px 8px #0009;transform:rotate(var(--angle)) translateY(var(--lift,0px));transform-origin:50% 120%;transition:transform .17s,box-shadow .17s;margin-left:var(--overlap,-16px);color:#3e2c1c;touch-action:none}.card:first-child{margin-left:0}.card:hover,.card.selected{transform:translateY(-20px) scale(1.08);z-index:20!important;box-shadow:0 0 0 2px #b1ecd0,0 0 18px #9df1c277}.card.unaffordable{filter:saturate(.65) brightness(.77)}.card .art{position:absolute;inset:20px 2px 37px;background-size:334% 379%}.card-cost{position:absolute;top:-9px;left:-7px;z-index:2;width:27px;height:29px;background:#2b6854;border:2px ridge #e3c486;color:#ecf5d9;font:bold 22px/25px Georgia;border-radius:6px;box-shadow:1px 2px #281f17}.card-title{position:absolute;top:3px;left:19px;right:0;font-size:9px;font-weight:900;white-space:nowrap}.card-effect{position:absolute;bottom:2px;left:3px;right:3px;font-size:8px;line-height:1.4;border-top:1px solid #b89762;padding-top:3px;font-weight:bold}.hand-help{height:22px;flex-shrink:0;text-align:center;background:#19160f;font-size:8px;color:#a89975;letter-spacing:1px;padding-top:5px}#card-inspect{position:absolute;bottom:190px;left:25px;right:25px;z-index:25;padding:13px 15px;background:#ede0c0;border:3px ridge #ae8550;color:#412e21;box-shadow:0 8px 40px #000b}#card-inspect small{font-size:9px;color:#78613e}#card-inspect h3{margin:5px 0;font-size:18px}#card-inspect p{font-size:12px;line-height:1.6;margin:8px 0}#close-inspect{position:absolute;right:8px;top:6px;background:none;font-size:24px;color:#6a4c34}#play-card{width:100%;padding:8px;background:#355d44;color:#f1eacb;border:1px solid #778963;font-size:12px}#toast{position:absolute;top:46%;left:50%;transform:translate(-50%,-50%);z-index:40;width:max-content;max-width:85%;font-size:12px;background:#251b12ed;border:1px solid #b89059;padding:11px 16px;opacity:0;pointer-events:none;transition:opacity .2s;color:#f5ddac}#toast.visible{opacity:1}#fx-layer{position:absolute;inset:0;pointer-events:none;z-index:50}.damage-fx{position:absolute;font:900 35px Georgia;color:#ffad77;text-shadow:2px 2px #6d2a1d,-1px -1px #4e2c1b;animation:damage .9s ease-out forwards}.damage-fx.heal{color:#a7edc9}.beam{position:absolute;height:4px;background:#b7ffe1;box-shadow:0 0 10px #69ffd0;transform-origin:left center;border-radius:8px;animation:beam .4s ease-out forwards}.hit{animation:hit .35s}.summon{animation:summon .4s}#turn-banner{position:absolute;top:44%;left:0;right:0;z-index:35;text-align:center;padding:15px;font-size:24px;font-weight:900;letter-spacing:6px;background:linear-gradient(90deg,transparent,#26392ef5 20%,#26392ef5 80%,transparent);border-block:1px solid #c7b483;color:#f0dfb3;opacity:0;pointer-events:none}#turn-banner.visible{animation:banner 1s ease both}.enemy-hero.targetable{outline:3px solid #a7e6bc;outline-offset:-4px}.unit.targetable{outline:2px solid #e9c37c}.hot .enemy-portrait{filter:sepia(.2) saturate(1.3)}dialog{border:3px ridge #b78c53;background:#2e251b;color:#edddbc;padding:19px 22px;width:calc(100% - 38px);max-width:400px;max-height:83vh;box-shadow:0 12px 60px #000c}dialog::backdrop{background:#090805c9;backdrop-filter:blur(3px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;color:#b89b70;font:9px Georgia;letter-spacing:2px}.dialog-top button{background:none;font-size:24px;color:#e4caa0}dialog h2{margin:9px 0 15px;font-size:25px}#dialog-body{font-size:12px;line-height:1.8;color:#d1bc96}#dialog-body ul{padding-left:18px}#dialog-body li{margin:9px 0}#dialog-actions{display:flex;gap:10px;margin-top:18px}#dialog-actions button{flex:1;background:#39503a;border:1px solid #a39660;padding:11px;font-size:12px}.catalog-card{display:flex;gap:12px;border-bottom:1px solid #705431;padding:12px 0}.catalog-card .art{width:86px;height:74px;flex-shrink:0;border:2px ridge #bfa371}.catalog-card b{font-size:13px}.catalog-card p{font-size:10px;margin:4px 0}.catalog-card small{color:#bdb784;font-size:9px}.result-number{font:50px Georgia;color:#e4b879}.result-row{display:flex;justify-content:space-around;text-align:center;font-size:10px;margin:20px 0}.result-row strong{font:26px Georgia;display:block;color:#dbd09a}.drag-ghost{position:fixed;pointer-events:none;z-index:100;transform:rotate(-5deg) scale(1.1)!important;margin:0!important;box-shadow:0 0 14px #b7efc9}.board.drop-ready{box-shadow:inset 0 0 20px #82e8ad55;outline:2px solid #a1d5b3;outline-offset:-4px}@keyframes breathe{50%{transform:scale(1.015)}}@keyframes damage{0%{opacity:0;transform:scale(.7)}20%{opacity:1;transform:translateY(-12px) scale(1.15)}100%{opacity:0;transform:translateY(-55px)}}@keyframes beam{from{opacity:1}to{opacity:0}}@keyframes hit{25%{translate:-5px 0;filter:brightness(1.8)}50%{translate:5px 0}75%{translate:-3px 0}}@keyframes summon{from{opacity:0;transform:translateY(-18px) scale(.8)}to{opacity:1;transform:none}}@keyframes banner{0%,100%{opacity:0;transform:scaleX(.8)}20%,75%{opacity:1;transform:scaleX(1)}}@media(max-width:1000px){.desktop-note{display:none}}@media(max-width:500px){#app{width:100%;height:100svh;min-height:700px;max-height:1000px;margin:0;box-shadow:none}.home-title strong{font-size:82px}#hero-preview{height:32vh;min-height:210px;max-height:290px}.unit-row{gap:13px}.enemy-hero{height:19.5svh;min-height:140px;max-height:185px}#hand{height:145px}.card{height:131px;width:94px}.hand-help{height:23px}.board{min-height:235px}.slot{max-height:115px}.home-actions{bottom:max(22px,env(safe-area-inset-bottom))}}@media(max-height:760px){.home-title{margin-top:0}.home-title h1{font-size:33px}.home-title strong{font-size:68px}.home-title p{margin:2px}.home-title .ribbon{margin-top:8px}.home-bubble{top:47%}.teaser-cards{bottom:173px}.mini-card{height:80px;width:67px}.home-actions .gold-button{padding:12px}.home-actions .secondary-row{margin-top:16px}.select-heading h2{font-size:23px;margin-bottom:12px}#hero-preview{min-height:190px;height:27vh}#hero-options{margin-top:14px;margin-bottom:14px}.skill-preview{padding:8px 12px}.select-bottom{bottom:20px}.enemy-hero{height:140px;min-height:140px}.battle-header{height:35px}.board{min-height:215px;padding-top:5px}.slot{min-height:73px;max-height:94px}.unit-row{min-height:79px}.board-middle{height:38px}.player-dock{height:57px;padding-top:5px}.mana-row{height:25px}#hand{height:132px}.card{height:121px;width:87px}.card-title{font-size:8px}.hand-help{height:20px}.board-label{font-size:7px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

.enemy-card-reveal{position:absolute;left:calc(50% - 51px);top:29%;width:103px;height:141px;z-index:45;animation:enemyReveal 1.1s ease both;pointer-events:none;transform:none;margin:0}.enemy-card-reveal .card-cost{background:#843629}@keyframes enemyReveal{0%{opacity:0;translate:0 -50px;scale:.7}20%,75%{opacity:1;translate:0 0;scale:1.15}100%{opacity:0;translate:0 30px;scale:.8}}

/* pixel-upgrade.css */
/* Pixel-art identity stays fixed. Motion and hierarchy are upgraded. */
.player-portrait{background-image:url('assets/avatars.v9-1.webp');background-size:200% 100%;background-position:var(--portrait-x) center;image-rendering:pixelated;background-repeat:no-repeat}#hero-preview{height:240px;border:4px ridge #bfa06b}#hero-portrait.player-portrait{background-size:200% 100%}#hero-options{grid-template-columns:repeat(2,1fr);gap:14px;margin:13px 30px}#hero-options button{display:flex;align-items:center;gap:12px;padding:6px 12px;font-size:13px;border:2px solid #826444}#hero-options .avatar{width:45px;height:45px;margin:0;border:1px solid #c9a575}.hero-caption h2{font-size:22px}.nickname-label{display:block;margin:13px 30px 6px;color:#dac598;font-size:11px;letter-spacing:2px}.nickname-label small{float:right;color:#98846a;font-size:9px;letter-spacing:0}#nickname{display:block;width:calc(100% - 60px);height:41px;margin:0 30px 13px;padding:9px 12px;background:#181b15;color:#e7dbbd;border:2px solid #897146;border-radius:0;font:14px 'Microsoft YaHei';outline:none;box-shadow:inset 3px 3px #0c110b}#nickname:focus{border-color:#b6d7a4}#nickname::placeholder{color:#756f58}.skill-preview{padding:9px 13px}.select-bottom{bottom:23px}.select-heading h2{font-size:25px}.select-heading p{margin-top:0}.select-heading{padding-top:0}.select-bottom p span{font-size:9px}
.card{border-radius:0;border:3px solid #a9814b;box-shadow:inset 0 0 0 1px #eed4a1,3px 4px #0d100ba8;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s}.card-cost{border-radius:0;clip-path:polygon(20% 0,80% 0,80% 10%,100% 10%,100% 80%,80% 80%,80% 100%,20% 100%,20% 90%,0 90%,0 20%,20% 20%);border:2px solid #ddc187;font-family:Georgia}.card-title{font-size:9px;letter-spacing:-.25px}.card-effect{font-weight:500}.card.legendary{border-color:#ecc36f;box-shadow:0 0 0 1px #9b653c,3px 4px #171009;position:relative}.card.legendary:after{content:'◆';color:#8a5421;position:absolute;bottom:29px;right:3px;font-size:8px}.unit.legendary{border-color:#e3b857;box-shadow:0 0 0 2px #976932}.unit.ready{box-shadow:0 0 0 2px #9ec899,0 3px #17251a}.unit.selected{outline:2px solid #def3c9;box-shadow:0 0 0 5px #476642}.stat{font-size:18px}.slot{background:radial-gradient(#70532b1c,#17130c24);border:2px solid #60482c;box-shadow:inset 2px 2px #201a12,inset -2px -2px #8b6a3938}.slot:empty:after{content:'◆';font-size:25px;color:#bda57324}.board{border-inline:7px ridge #8a6c43;background:repeating-linear-gradient(0deg,transparent 0 33px,#b3955a09 33px 34px),radial-gradient(ellipse,#80603326,#1c1a1244);isolation:isolate}.board-ornament{position:absolute;z-index:-1;top:40%;left:calc(50% - 32px);font-size:64px;color:#baa7750e;pointer-events:none}.board-middle{margin-inline:-7px;padding-inline:4px;border-block:2px solid #715936;background:#241e1480}.board-label{font-size:8px;letter-spacing:2px}.turn-mark>span{font-weight:bold;font-size:14px}.heat-track{border:1px solid #ad8851;height:11px}.heat-track i{background:repeating-linear-gradient(90deg,#d37c55 0 7px,#8b4836 7px 9px);transition:width .35s steps(12,end)}.enemy-hero{border-bottom:3px solid #a48554}.enemy-portrait{animation:none}.home-art{animation:none}.player-dock{border-top:3px solid #a18452;background:#242519}#player-avatar{border-radius:0;border:3px solid #bba272;clip-path:polygon(10% 0,90% 0,90% 10%,100% 10%,100% 90%,90% 90%,90% 100%,10% 100%,10% 90%,0 90%,0 10%,10% 10%)}#hero-skill{border:2px solid #8d9861;background:#2e3b28;box-shadow:inset 2px 2px #4b5b38,inset -2px -2px #172014}.gold-button{border:3px solid #e0c184;background:linear-gradient(#b38545,#946534);box-shadow:inset 0 3px #e2bd7e,inset 3px 0 #b59260,inset -3px -3px #694324,0 5px #372619,0 6px #bd9056}.icon{border-width:2px;font-size:16px}.mini-card{border-style:solid;box-shadow:3px 4px #20190e}.home-bubble{transform:none;border:2px solid #b0986a;box-shadow:4px 4px #18140d}.vignette{background:linear-gradient(#141610c9,transparent 40%,transparent 58%,#161710ee 89%,#161710)}.home-title strong{color:#de7d68}.ambient-motes{position:absolute;inset:0;pointer-events:none;overflow:hidden}.ambient-motes i{position:absolute;width:3px;height:3px;background:#efc57b;left:14%;top:65%;animation:pixelMote 6s steps(20,end) infinite}.ambient-motes i:nth-child(2){left:84%;top:73%;animation-delay:-2s}.ambient-motes i:nth-child(3){left:23%;top:30%;animation-delay:-3s}.ambient-motes i:nth-child(4){left:73%;top:41%;animation-delay:-1s}.ambient-motes i:nth-child(5){left:47%;top:22%;animation-delay:-4s}.ambient-motes i:nth-child(6){left:92%;top:55%;animation-delay:-5s}@keyframes pixelMote{0%{opacity:0;transform:translate(0,0)}30%,60%{opacity:.8}100%{opacity:0;transform:translate(10px,-70px)}}
.cast-card{position:absolute!important;z-index:55!important;width:106px;height:150px;margin:0!important;pointer-events:none;transform-origin:center}.attack-actor{position:absolute!important;z-index:54;pointer-events:none}.pixel-spark{position:absolute;display:block;pointer-events:none}.pixel-impact{position:absolute;width:65px;height:65px;border:7px solid #ffd68d;clip-path:polygon(35% 0,65% 0,65% 15%,85% 15%,85% 35%,100% 35%,100% 65%,85% 65%,85% 85%,65% 85%,65% 100%,35% 100%,35% 85%,15% 85%,15% 65%,0 65%,0 35%,15% 35%,15% 15%,35% 15%);background:#ffecc350;pointer-events:none}.pixel-impact.healing{border-color:#b1e9b3;background:#a5e6a040}.legend-vfx{position:absolute;width:200px;height:200px;background-image:url('assets/legends.v9-1.webp');background-size:300% 200%;background-position:var(--fx-x) 100%;image-rendering:pixelated;mix-blend-mode:screen;pointer-events:none;z-index:65}.legend-vfx.xumengqian{width:200px;height:200px}.pixel-stage{position:absolute;inset:20% 0 25%;pointer-events:none;background:repeating-linear-gradient(90deg,transparent 0 35px,#f3cc7e44 35px 55px,transparent 55px 90px,#e79ac144 90px 110px);clip-path:polygon(30% 0,70% 0,100% 100%,0 100%);mix-blend-mode:screen}#opponent-hand{position:absolute;right:12px;top:44px;height:25px;width:95px;pointer-events:none;z-index:4;opacity:.85}#opponent-hand i{position:absolute;left:calc(var(--i)*9px);width:20px;height:26px;background:repeating-linear-gradient(45deg,#613826 0 3px,#7d5332 3px 6px);border:2px solid #b59058;transform:rotate(calc((var(--i) - 3)*6deg));box-shadow:1px 2px #19140a}#speech{top:50px;max-width:145px;font-size:10px;border:2px solid #baa379;box-shadow:3px 3px #251b13}.damage-fx{font-family:Georgia;color:#ffc47d;text-shadow:3px 0 #502e17,-2px 0 #502e17,0 3px #502e17,0 -2px #502e17;animation-timing-function:steps(10,end)}.beam{height:3px;box-shadow:none;border-radius:0;background:#d5ecbd}#turn-banner{background:#263120e8;border-block:3px solid #ac965d;text-shadow:3px 3px #151b0f;letter-spacing:5px;animation-timing-function:steps(8,end)}dialog{border:3px solid #ac8c58;box-shadow:inset 0 0 0 3px #433925,5px 5px #11130c}dialog::backdrop{backdrop-filter:none;background:#0b0c09ce}#card-inspect{border:3px solid #baa06e;box-shadow:5px 5px #13150ec9}#card-inspect h3{font-size:20px}#card-inspect p{font-size:12px}#end-turn{border:2px solid #b99f67;box-shadow:inset 2px 2px #d9b36c,inset -2px -2px #695124,2px 3px #15170d}.desktop-note b{font-size:24px}.desktop-note small{color:#a29673}
@media(max-width:500px){#hero-preview{height:27svh;min-height:175px;max-height:225px}.select-heading h2{font-size:23px;margin-bottom:13px}#hero-options{margin-top:11px;margin-bottom:11px}#hero-options .avatar{height:38px;width:38px}.skill-preview p{font-size:10px}.nickname-label{margin-top:9px}#nickname{height:39px}.select-bottom p{font-size:10px}.select-bottom .gold-button{font-size:19px;padding:13px}}
@media(max-height:760px){#select header{padding-top:12px;padding-bottom:12px}.select-heading p{font-size:9px}.select-heading h2{font-size:21px;margin:7px 0 10px}#hero-preview{height:180px;min-height:170px}.hero-caption{padding-bottom:8px}.hero-caption h2{font-size:20px}.hero-caption p{font-size:9px}#hero-options{margin-block:9px}#hero-options button{font-size:11px;padding:4px 10px}#hero-options .avatar{width:32px;height:32px}#nickname{height:34px;margin-bottom:9px}.nickname-label{font-size:10px;margin-block:5px}.skill-preview{padding:7px 10px}.skill-preview b{font-size:12px}.select-bottom{bottom:17px}.select-bottom .gold-button{padding:11px}.select-bottom p{margin:6px 0 10px}.legend-vfx{width:180px;height:180px}}
.duel-intro{position:absolute;inset:0;background:#12160feb;z-index:85;display:flex;align-items:center;justify-content:center;gap:12px;flex-direction:column;pointer-events:all}.duel-person{position:relative;width:240px;height:210px;border:4px solid #b5bb89;box-shadow:5px 5px #10170b}.duel-person>i{display:block;width:100%;height:100%;image-rendering:pixelated}.duel-person>b{position:absolute;bottom:0;left:0;right:0;background:#24371edd;text-align:center;font-size:23px;padding:10px;color:#eff0c4}.duel-intro>strong{font:bold 45px Georgia;color:#e9c989;text-shadow:4px 4px #644322}.duel-person.opponent{border-color:#c29b6c}.duel-person.opponent>i{background:url('../assets/room.v9-1.webp') center 38%/100% auto}.duel-person.opponent>b{background:#5b3926dd}

/* ornate-v4.css */
/* The approved walnut / bronze / jade concept, realized as a playable skin. */
:root{--parchment:#e8d0a2;--bronze:#bb8c51;--jade:#5d9279;--cream:#eed9af}body{background:radial-gradient(ellipse at 40% 40%,#35271e,#100e0c 80%)}#app{width:450px;height:900px;background:#21180f;box-shadow:0 0 0 3px #2e2216,0 0 0 5px #a27b48,0 0 0 8px #18120d,0 26px 80px #000b}.screen{background-color:#251a10}button{font-family:'Microsoft YaHei',sans-serif}.icon{border:1px solid #927044;box-shadow:inset 0 0 0 2px #2d2118;background:#20190fea;color:#d1b37d}.seal{background:#30251b;color:#dbba82;box-shadow:inset 0 0 0 2px #b28c51,0 0 0 1px #5e4728}header{padding:19px 23px}.mini{color:#c8aa77;font-size:8px;letter-spacing:2px}.home-art{background-image:url('assets/hero-v4.v9-1.webp');background-size:auto 76%;background-position:50% 44%;background-repeat:no-repeat;background-color:#211910;inset:0 -20%;image-rendering:pixelated}.vignette{background:linear-gradient(#17120de8 0%,#21160c9c 18%,transparent 36%,transparent 58%,#23190fcc 78%,#19130cf5)}.home-title{position:relative;margin-top:4px;isolation:isolate}.title-crests{display:flex;align-items:center;justify-content:center;gap:16px;margin:0 0 10px;color:#be9b64}.title-crests span{font:8px Georgia;letter-spacing:5px}.title-crests i{font-size:9px}.home-title p{font-size:9px;letter-spacing:4px;color:#d2b382}.home-title h1{font-size:39px;line-height:1.18;margin:12px 0 0;-webkit-text-stroke:1px #6e4729;text-shadow:1px -1px #ffe2a1,3px 3px #895530,5px 6px #1c140d;transform:rotate(-4deg);color:#f4d89d}.home-title strong{font-size:82px;color:#d96b4f;-webkit-text-stroke:1px #ffd299;text-shadow:3px 3px #8e3928,6px 6px #311a0d;letter-spacing:7px}.home-title strong span{color:#eabc6a}.ribbon{background:linear-gradient(90deg,transparent,#2c2217 15%,#2c2217 85%,transparent);border-block:1px solid #b0874b;margin-top:12px;letter-spacing:4px;font-size:9px;padding:7px 30px}.home-bubble{top:53%;right:26px;font-size:11px;padding:10px 13px;background:#e8d2a7;border:1px solid #b49665;color:#5b3825;box-shadow:3px 3px #291a11}.teaser-cards{bottom:191px;gap:2px}.mini-card{width:78px;height:95px;border:7px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 9px / 0 stretch;box-shadow:3px 7px 9px #0d0a08b3}.home-actions{left:27px;right:27px;bottom:26px}.gold-button{position:relative;background:linear-gradient(#a47740,#61431e);border:12px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 14px / 0 stretch;box-shadow:0 6px 9px #100c0899,inset 0 0 0 2px #b19057;font-size:22px;letter-spacing:2px;padding:11px 15px;color:#ffe5b2;text-shadow:2px 2px #513716}.gold-button:before{content:'';position:absolute;inset:1px;border:1px solid #c29b5c55;pointer-events:none}.secondary-row{gap:15px;margin-top:17px}.secondary-row button{background:#2b2519;border:7px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 8px / 0 stretch;padding:6px 5px;color:#d5bd8d;font-size:11px}.home-footer{margin-top:15px;font-size:8px;color:#aa9169}.select-bg{background:radial-gradient(ellipse at 50% 30%,#70543845,#19150f 80%),repeating-linear-gradient(1deg,#291f15 0 38px,#2e2318 39px,#211a13 41px)}.select-heading{text-align:center;padding-inline:16px}.select-heading p{font:8px Georgia;letter-spacing:3px;color:#b39a71}.select-heading h2{font-size:24px;color:#ecd4a1;letter-spacing:1px;margin:9px 0 17px}#hero-preview{height:245px;margin:0 29px;border:12px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 16px / 0 stretch;box-shadow:0 7px 16px #08070680;overflow:visible}#hero-portrait{inset:0}.hero-caption{padding:28px 13px 10px;background:linear-gradient(transparent,#211a10ef 68%)}.hero-caption small{font-size:8px;color:#cbba85}.hero-caption h2{font-size:23px;color:#efdaac}.hero-caption p{font-size:10px;color:#ccbc99}#hero-options{gap:15px;margin:14px 30px}#hero-options button{background:#2b2518;border:7px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 8px / 0 stretch;padding:3px 10px;color:#cbb88e}#hero-options button.selected{border:7px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 8px / 0 stretch;background:#354333;box-shadow:inset 0 0 0 1px #b0c999,0 0 8px #8ab59124}#hero-options .avatar{width:35px;height:35px}.nickname-label{margin:9px 32px 6px;color:#bea578;font-size:10px}#nickname{background:#171b14;border:1px solid #867447;box-shadow:inset 2px 3px #0d120b,0 0 0 2px #211e14;color:#e7d5af;height:37px;margin-bottom:13px}.skill-preview{background:#2b3324;border:1px solid #7c8250;box-shadow:inset 0 0 0 3px #1e251b;margin:0 30px;padding:10px 13px;gap:13px}.skill-preview>span{font-size:24px}.skill-preview b{font-size:12px;color:#d7dbb1}.skill-preview p{font-size:10px;color:#a6b08b}.opponent-preview{display:flex;align-items:center;gap:12px;margin:16px 30px;padding:8px 10px;background:#322519;border-block:1px solid #7c5d36}.opponent-portrait{width:46px;height:46px;background:url('assets/hero-v4.v9-1.webp') center 42%/210% auto;border:2px ridge #be9157;image-rendering:pixelated}.opponent-preview>div:nth-child(2){display:flex;flex-direction:column;gap:3px}.opponent-preview small{font-size:8px;color:#a8936b}.opponent-preview b{font-size:14px;color:#e6c995}.opponent-preview span{font-size:8px;color:#b9a080}.opponent-preview>strong{margin-left:auto;font:24px Georgia;color:#b08c50}.select-bottom{left:30px;right:30px;bottom:24px}.select-bottom>p{font-size:9px;color:#b39a70;margin:8px 0 10px}.select-bottom .gold-button{font-size:20px;padding:10px 14px}
.battle-back{background:repeating-linear-gradient(0deg,#2c2017 0,#31241a 37px,#21180f 39px,#3a2b1b 41px),repeating-linear-gradient(90deg,#fff0 0 53px,#ac895708 54px 55px);box-shadow:inset 0 0 55px #0f0b07}.battle-header{height:35px;padding:5px 10px;background:#19150f;border:1px solid #866538;font-size:11px;letter-spacing:1px}.battle-header .icon{height:24px;width:24px;background:transparent;border:0;box-shadow:none}.match-type{font-size:8px}.enemy-hero{height:190px;background:#21190e;border:0;overflow:hidden}.enemy-portrait{background-image:url('assets/hero-v4.v9-1.webp');background-size:cover;background-position:center center;image-rendering:pixelated}.enemy-name{left:13px;bottom:8px;font-size:12px;color:#ecd2a1}.enemy-name small{font-size:7px}.enemy-hero:after{inset:74% 0 0}.enemy-resource{font-size:8px;bottom:8px;right:13px;color:#c7ae7f;background:#1f160bc2;border:1px solid #8b683e;padding:3px 5px}#speech{font-size:11px;font-weight:700;background:#edd9b3;color:#523624;border:5px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 6px / 0 stretch;box-shadow:2px 3px #291a0e;top:35px;right:12px;max-width:151px;padding:6px 8px}#speech:after{left:8px;bottom:-12px;border-top-color:#dfc59b}#opponent-hand{top:38px;right:8px;opacity:.62;transform:scale(.8);transform-origin:top right}.heat-panel{border:8px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 10px / 0 stretch;position:relative;padding:3px 13px;background:#1c150d;height:40px;gap:7px;box-shadow:inset 0 0 0 1px #84643b;overflow:visible}.heat-panel:before,.heat-panel:after{content:'';position:absolute;top:50%;width:23px;height:23px;border:4px ridge #b9985e;background:radial-gradient(circle at 35% 30%,#a2d6b5,#326954 60%,#143c2d);border-radius:50%;transform:translateY(-50%)}.heat-panel:before{left:-12px}.heat-panel:after{right:-12px}.heat-panel>span{font-size:13px;font-weight:900;color:#d47859;white-space:nowrap}.heat-panel b{font:15px Georgia;color:#e1cba0}.heat-track{height:13px;border:1px solid #6d5433;background:#19160f;box-shadow:inset 1px 2px #090c08}.heat-track i{background:repeating-linear-gradient(90deg,#c2754f 0 8px,#743825 8px 10px);box-shadow:inset 0 2px #e0986888}.board{padding:9px 16px 7px;border:10px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 12px / 0 stretch;min-height:240px;background:radial-gradient(ellipse at center,#82613819,transparent 65%),repeating-linear-gradient(1deg,#32251b 0 48px,#2a1e15 49px,#38291c 51px);box-shadow:inset 0 0 15px #100c0780}.board-ornament{font-size:57px;color:#b48c4c14;top:41%}.board-label{font-size:7px;color:#9c835c;letter-spacing:1px;margin-bottom:5px;opacity:.8}.board-label small{font-size:7px}.unit-row{gap:17px;min-height:90px}.slot{aspect-ratio:.82;max-height:143px;min-height:95px;border:4px double #765b36;box-shadow:inset 0 0 0 3px #20180f,inset 0 0 14px #17110870;background:#221a1270;clip-path:polygon(10px 0,calc(100% - 10px) 0,100% 10px,100% calc(100% - 10px),calc(100% - 10px) 100%,10px 100%,0 calc(100% - 10px),0 10px);overflow:visible}.slot:empty:after{content:'✥';font-size:38px;color:#b5904830}.slot:has(.unit){clip-path:none;border:none;box-shadow:none;background:transparent}.unit{border:8px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 10px / 0 stretch;background:#32291b;box-shadow:2px 4px 5px #100d0780;overflow:visible}.unit .art{inset:15px 0 9px;background-size:334% 379%}.unit-name{top:-2px;left:-3px;right:-3px;background:linear-gradient(#3f2b1a,#241a11);border-bottom:1px solid #c39655;font-size:10px;font-weight:900;padding:3px 0;color:#e4c99a;text-shadow:1px 2px #21160b}.unit-state{bottom:-3px;font-size:7px;color:#beac7d;background:#322919ab;left:8px;right:8px}.unit.guard{border:8px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 10px / 0 stretch;box-shadow:0 0 0 1px #81a893,0 0 0 3px #345445,2px 4px #151b12}.unit.ready{box-shadow:0 0 0 1px #acc6a6,0 0 8px #9abc8745}.unit.selected{outline:2px solid #d7f3bd;outline-offset:2px;box-shadow:0 0 10px #a5d39855}.unit.legendary{border:8px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 10px / 0 stretch;box-shadow:0 0 0 1px #d6ad60,0 0 12px #be953340}.stat{width:26px;height:29px;border:3px ridge #c99a56;font:900 21px/24px Georgia;color:#ffe3ad;text-shadow:2px 2px #4f2c1b;clip-path:polygon(50% 0,100% 22%,100% 77%,50% 100%,0 77%,0 22%);bottom:-12px}.attack{left:-12px;background:#9c753b;transform:none}.health{right:-12px;background:#8c3829;transform:none}.board-middle{height:42px;margin:8px -23px 7px;padding:0 9px;border-block:1px solid #8c6d3e;background:linear-gradient(90deg,#284c38 0,#253121 20%,#33261a 40%,#33261a 80%,#78592c);position:relative;z-index:3}.turn-mark>span{font-size:13px;color:#d4dec0;letter-spacing:1px}.turn-mark small{font-size:7px;max-width:215px;color:#b09e74}#end-turn{border:7px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 8px / 0 stretch;background:linear-gradient(#946d36,#513619);font-size:12px;padding:6px 7px;color:#ead29f;box-shadow:0 3px #1b120b;text-shadow:1px 2px #442a11;white-space:nowrap}.board-label.friendly{margin-top:6px;margin-bottom:0}.player-dock{height:59px;background:linear-gradient(#392b1b,#241d13);border-top:5px ridge #ae844b;padding:7px 13px 4px;gap:9px}#player-avatar{height:44px;width:44px;clip-path:none;border-radius:50%;border:5px ridge #b89052;box-shadow:0 0 0 1px #6c5632}.player-info>b{font-size:11px;color:#d7c697}.player-info>span{font-size:9px;margin:3px 0;color:#d59369}.player-info .heat-track{height:5px;max-width:115px}.player-info strong{font:10px Georgia}#hero-skill{border:6px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 7px / 0 stretch;padding:3px 8px;background:#293626;color:#cdd6ac;box-shadow:none}#hero-skill small{font-size:7px}#hero-skill b{font-size:10px}.mana-row{height:28px;padding:0 13px;background:#241c12;border-bottom:1px solid #8c6b3d;font-size:8px}.mana-row b{font:bold 15px Georgia}.mana-row>div>span:first-child{font-size:11px;letter-spacing:1px;color:#a9c7a5}#mana-gems i{width:11px;height:17px;transform:none;clip-path:polygon(50% 0,100% 22%,100% 76%,50% 100%,0 76%,0 22%);background:#233b27;border:1px solid #749265}#mana-gems i.full{background:linear-gradient(90deg,#b5edba,#8dca9e 48%,#5d9975 50%,#bedcac);box-shadow:none}#hand{height:171px;padding:12px 13px 0;background:linear-gradient(#251c12,#1a150e);overflow:visible}.card{width:112px;height:156px;border:7px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 8px / 0 stretch;background:linear-gradient(90deg,#c8ac79,#ebd8b0 18%,#ddc497 80%,#bca171);box-shadow:3px 5px 7px #09090799;transform-origin:center 140%;color:#3e2a16}.card .art{inset:18px 0 35px;border-block:1px solid #8a6a3a;image-rendering:pixelated}.card-title{top:0;left:13px;right:-1px;font-size:10px;font-weight:900;text-shadow:0 1px #f6e0ba;letter-spacing:-.4px;line-height:17px}.card-cost{width:29px;height:32px;left:-12px;top:-13px;border:3px ridge #d5bb85;clip-path:polygon(50% 0,100% 20%,100% 75%,50% 100%,0 75%,0 20%);background:linear-gradient(120deg,#81baa1,#326454 60%,#194435);color:#eff4d1;font:900 22px/25px Georgia;text-shadow:2px 2px #254738;box-shadow:none}.card-effect{font-size:8px;font-weight:700;line-height:1.35;bottom:0;left:0;right:0;padding:4px 1px 0;border-top:1px solid #b3945f;text-shadow:0 1px #e9d4ad66}.card.selected,.card:hover{box-shadow:0 0 0 2px #b9e8c5,0 0 0 4px #4c8f70,0 0 13px #b5dba55c;transform:translateY(-23px) rotate(0) scale(1.04)}.card.legendary{border:7px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 8px / 0 stretch;background:linear-gradient(90deg,#c6a472,#eddaad,#d6b581);box-shadow:0 0 0 1px #c0964c,3px 5px #18110b}.card.unaffordable{filter:saturate(.78) brightness(.9)}.hand-help{height:21px;background:#19140d;color:#b99e6c;font-size:8px;letter-spacing:1px;padding-top:5px}.cast-card,.enemy-card-reveal{width:112px;height:156px}.cast-card .card-title{font-size:10px}.cast-card .art{inset:18px 0 35px}.legend-vfx.drugs{background:none!important;mix-blend-mode:normal;width:220px;height:220px}.elephant-frames{display:block;width:100%;height:100%;background-image:url('assets/elephant-frames.v9-1.webp');background-size:200% 200%;background-position:0 0;image-rendering:pixelated;animation:elephantStride .44s steps(1,end) infinite}@keyframes elephantStride{0%,24.99%{background-position:0 0}25%,49.99%{background-position:100% 0}50%,74.99%{background-position:0 100%}75%,100%{background-position:100% 100%}}.legend-vfx.drugs.impact-frame .elephant-frames{animation:none;background-position:100% 100%}#card-inspect{bottom:204px;left:27px;right:27px;border:12px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 14px / 0 stretch;background:#e4d0a8;box-shadow:0 10px 25px #0c0809aa;padding:10px 13px}#card-inspect h3{font-size:20px}#play-card{background:#34563d;border:1px solid #8c9867;box-shadow:inset 0 0 0 2px #243b29;font-size:12px;padding:10px}.duel-person{border:12px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 14px / 0 stretch;height:220px;width:240px}.duel-person.opponent{border:12px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 14px / 0 stretch}.duel-person.opponent>i{background-image:url('assets/hero-v4.v9-1.webp');background-size:cover;background-position:center}.duel-person>b{font-size:20px;padding:8px}.duel-intro{background:#121009e8;gap:10px}.duel-intro>strong{font-size:37px;color:#e2bd78}
dialog{max-width:410px;width:calc(100% - 38px);border:14px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 16px / 0 stretch;background:repeating-linear-gradient(0deg,#2e2318 0 45px,#30251a 46px,#251d13 48px);box-shadow:0 14px 50px #070503b3;padding:13px 16px;color:#e6d0a5}dialog h2{font-size:24px;color:#f0d6a3;border-bottom:1px solid #886a3b;padding-bottom:13px;margin-top:8px}#dialog-body{color:#cdb68e;font-size:12px}.dialog-top{color:#b79765;font-size:9px}#dialog-actions button{border:8px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 9px / 0 stretch;background:#35422c;padding:7px 6px;color:#e3d3a5}.catalog-card{border-bottom:1px solid #6f5432;padding:15px 0;gap:13px}.catalog-card .art{height:93px;width:88px;border:7px solid transparent;border-image:url('assets/ornate-frame.v9-1.webp') 300 / 8px / 0 stretch}.catalog-card b{font-size:13px;color:#e0c390}.catalog-card p{font-size:10px}.result-row{border-block:1px solid #765c34;padding:15px 0}.result-row strong{color:#d9bd7f;font-size:28px}
@media(max-width:500px){#app{width:100%;height:100svh;min-height:700px;max-height:1000px;margin:0;box-shadow:none}.enemy-hero{height:21svh;min-height:145px;max-height:192px}.board{min-height:230px}.unit-row{gap:15px;min-height:85px}.slot{max-height:128px;min-height:91px}.card{width:104px;height:148px}.card-title{font-size:9px}.card-effect{font-size:8px}#hand{height:162px}.card .art{inset:17px 0 33px}.heat-panel{height:37px}#hero-preview{height:24svh;min-height:176px;max-height:225px}.select-heading h2{font-size:22px;margin-bottom:15px}.opponent-preview{margin-top:12px;margin-bottom:8px}.select-bottom .gold-button{padding:7px 12px;font-size:19px}.select-bottom{bottom:21px}.home-title strong{font-size:77px}.home-actions .gold-button{font-size:21px}.home-title h1{font-size:36px}.mini-card{height:90px;width:73px}.home-title{margin-top:0}.card-cost{font-size:21px}.turn-mark small{max-width:190px}.unit-name{font-size:9px}#card-inspect{bottom:194px}}
@media(max-height:760px){#select header{padding-block:12px}.select-heading p{font-size:7px}.select-heading h2{font-size:19px;margin:7px 0 10px}#hero-preview{height:163px;min-height:163px;border-width:10px}.hero-caption p{font-size:9px}.hero-caption h2{font-size:19px}#hero-options{margin-block:9px}#hero-options .avatar{width:27px;height:27px}#hero-options button{padding:0 7px;font-size:11px}.nickname-label{margin-top:5px;margin-bottom:4px;font-size:9px}#nickname{height:32px;margin-bottom:9px}.skill-preview{padding:6px 10px}.skill-preview p{font-size:9px}.skill-preview b{font-size:11px}.opponent-preview{margin-block:10px;padding:5px 9px}.opponent-portrait{width:35px;height:35px}.opponent-preview small{font-size:7px}.opponent-preview b{font-size:12px}.opponent-preview span{font-size:7px}.select-bottom{bottom:16px}.select-bottom>p{margin:5px 0 7px;font-size:8px}.select-bottom .gold-button{padding:5px 10px;font-size:17px}.home-title h1{font-size:31px}.home-title strong{font-size:65px}.title-crests{margin-bottom:8px}.home-title p{font-size:8px}.home-title .ribbon{margin-top:8px}.home-bubble{top:49%}.teaser-cards{bottom:174px}.home-actions{bottom:20px}.home-actions .gold-button{padding:8px 12px;font-size:20px}.secondary-row{margin-top:14px}.home-footer{font-size:7px}.enemy-hero{height:148px;min-height:148px}.battle-header{height:32px}.heat-panel{height:34px;padding-block:1px}.heat-panel>span{font-size:11px}.heat-panel b{font-size:13px}.board{min-height:209px;padding:6px 13px 5px;border-width:8px}.board-middle{height:38px;margin-block:6px;margin-inline:-18px}.board-label{font-size:6px;margin-bottom:3px}.board-label small{font-size:6px}.unit-row{min-height:75px;gap:17px}.slot{min-height:77px;max-height:101px}.unit{border-width:6px;border-image-width:8px}.unit.guard,.unit.legendary{border-width:6px;border-image-width:8px}.unit-name{font-size:8px;padding:2px 0}.unit .art{inset:12px 0 8px}.unit-state{font-size:6px}.stat{font-size:17px;line-height:20px;width:23px;height:25px;bottom:-10px}.attack{left:-10px}.health{right:-10px}.player-dock{height:53px;padding-top:5px}#player-avatar{width:39px;height:39px}#hero-skill{padding:2px 6px}#hero-skill b{font-size:9px}.mana-row{height:25px}#hand{height:145px}.card{width:95px;height:133px}.card-title{font-size:8px;line-height:15px}.card .art{inset:15px 0 32px}.card-effect{font-size:7px}.card-cost{width:25px;height:29px;font-size:19px;line-height:22px;top:-12px}.hand-help{height:19px;font-size:7px}#card-inspect{bottom:175px}.duel-person{height:184px;width:214px}#speech{top:27px;font-size:10px;max-width:140px}.turn-mark>span{font-size:12px}.turn-mark small{font-size:6px;max-width:178px}#end-turn{font-size:10px;padding:4px 5px}}
.home-art{inset:0;background-size:auto 58%;background-position:50% 48%}.enemy-portrait{background-size:125% auto;background-position:50% 37%}.player-portrait,#hero-portrait.player-portrait{background-size:200% auto;background-position:var(--portrait-x) 30%}.unit,.unit.guard,.unit.legendary{border-image-width:18px;border-image-outset:2px}.card,.card.legendary,.cast-card{border-image-width:16px;border-image-outset:2px}.unit-name{font-size:10px}.board{border-image-width:24px}.heat-panel{border-image-width:17px}.gold-button{border-image-width:23px}.secondary-row button,#hero-options button,#hero-options button.selected{border-image-width:15px}.select-bottom .gold-button{border-image-width:22px}#hero-preview{border-image-width:25px}dialog{border-image-width:25px}#end-turn{border-image-width:16px}.catalog-card .art{border-image-width:17px}#card-inspect{border-image-width:23px}#hero-skill{border-image-width:13px}@media(max-height:760px){.unit,.unit.guard,.unit.legendary{border-image-width:15px}.card,.card.legendary{border-image-width:14px}.unit-name{font-size:8px}.home-art{background-size:auto 56%;background-position:50% 45%}}
.unit-row{padding-bottom:12px;min-height:0}.slot{height:100%;min-height:0;aspect-ratio:auto;max-height:140px;align-self:center}.board-middle{flex-shrink:0}.board-label{flex-shrink:0}.board-label.friendly{margin-top:3px}

/* room-v5.css */
.chouchou-canvas{display:block;position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated;pointer-events:none}.home-art.animated-ready,.enemy-portrait.animated-ready{background-image:none!important}.home-bubble{cursor:pointer;transition:translate .15s}.home-bubble:hover{translate:0 -2px}.home-bubble:before{content:'点击互动';position:absolute;right:1px;top:-16px;color:#d3bc87;font-size:8px;font-weight:400;letter-spacing:1px}.home-bubble:focus-visible{outline:2px solid #c7e6b3;outline-offset:4px}
#hand{display:flex;align-items:flex-end;justify-content:center;gap:15px;padding:12px 18px 1px;height:172px;overflow:visible}#hand .card{margin:0!important;transform:none!important;flex-shrink:0;width:112px;height:155px;z-index:1;transition:translate .18s,box-shadow .18s}#hand .card.selected,#hand .card:hover{translate:0 -6px;box-shadow:0 0 0 1px #bbebcb,0 0 0 3px #598c65,0 0 10px #ace2ad50;z-index:5}#hand .card-title{font-size:10px;left:14px;letter-spacing:-.35px}#hand .card-effect{font-size:9px;line-height:1.3;font-weight:600}#hand .card .art{inset:20px 0 38px}#hand .card-cost{left:-10px;top:-10px}.hand-pager{flex-shrink:0;height:27px;display:flex;justify-content:center;align-items:center;gap:15px;background:#1a160e;border-top:1px solid #5d482a;color:#cbb98d;font-size:9px}.hand-pager button{width:34px;height:21px;border:1px solid #8f7545;background:#322817;color:#e1c797;font-size:11px;box-shadow:inset 0 0 0 2px #231e12}.hand-pager button:disabled{opacity:.28}.hand-pager span{min-width:125px;text-align:center;letter-spacing:1px}.hand-help{height:18px;font-size:7px;padding-top:3px}.board-label{display:none}.board{padding-top:12px;padding-bottom:10px}.board-middle{margin-top:10px;margin-bottom:10px}.unit-row{padding-bottom:13px}.unit-name{line-height:1.35}.enemy-hero{height:181px}.card-inspect{z-index:70}#card-inspect{bottom:224px}#close-inspect{z-index:2}.catalog-card .art{flex-shrink:0}.catalog-card p{line-height:1.7}
@media(max-width:500px){#hand{height:163px;gap:13px;padding-inline:14px}#hand .card{width:104px;height:148px}#hand .card-title{font-size:9px}#hand .card-effect{font-size:8px}#hand .card .art{inset:18px 0 35px}.enemy-hero{height:20svh;max-height:180px;min-height:144px}#card-inspect{bottom:211px}.board{min-height:220px}}
@media(max-height:760px){#hand{height:147px;gap:13px;padding-inline:13px}#hand .card{width:95px;height:132px}#hand .card-title{font-size:8px;left:12px}#hand .card-effect{font-size:7px}#hand .card .art{inset:16px 0 31px}.hand-pager{height:24px;gap:12px;font-size:8px}.hand-pager button{height:19px;width:30px}.hand-help{height:16px;font-size:7px}.enemy-hero{height:144px;min-height:144px}.board{min-height:202px;padding-top:8px;padding-bottom:7px}.board-middle{margin-block:8px;height:36px}.unit-name{font-size:8px}.unit-row{padding-bottom:11px}#card-inspect{bottom:190px}}
@media(prefers-reduced-motion:reduce){.home-bubble{transition:none}#hand .card{transition:none}}
.slot{width:min(100%,88px);justify-self:center}.board-middle{height:32px;margin-block:7px}.enemy-hero{height:165px}
@media(max-width:500px){.enemy-hero{height:18svh;min-height:134px;max-height:166px}.slot{width:min(100%,86px)}}
@media(max-height:760px){.enemy-hero{height:130px;min-height:130px}.board-middle{height:28px;margin-block:6px}.slot{width:min(100%,78px)}}

/* arcade-home-v6.css */
/* Pixel arcade title and start screen. All changes scoped to the menu. */
#home{background:#171914}
#home .vignette{background:linear-gradient(#07121c9c 0%,#13171526 26%,transparent 40%,transparent 57%,#0c1319ad 75%,#0c1319 94%)}
#home .arcade-header{position:absolute;z-index:6;left:0;right:0;top:0;display:flex;align-items:center;justify-content:space-between;height:48px;padding:10px 20px}
.live-label{display:flex;align-items:center;gap:7px;color:#fff4db;font-size:10px;font-weight:800;letter-spacing:1px;text-shadow:1px 2px #080d13}.live-label i{width:6px;height:6px;background:#ff4b53;box-shadow:2px 2px #8b132e}.live-label small{font:700 8px monospace;color:#a3bed0;letter-spacing:2px;margin-left:2px}
#home .sound{width:30px;height:28px;border:2px solid #a0bac3;background:#14222bd9;box-shadow:2px 2px #03090b;color:#e0f6f7}
#home .home-title{position:absolute;top:55px;left:4px;right:4px;margin:0;z-index:4;text-align:center;pointer-events:none}
#home .home-title h1{all:unset;display:block;line-height:0}
#home .arcade-logo{display:block;width:100%;height:auto;max-height:250px;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 5px 0 #080b1190);animation:logo-arrive .45s steps(7) both}
#home .arcade-tagline{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-size:9px;font-weight:800;letter-spacing:2px;color:#f9f0c6;margin:3px 0 0;padding:5px 14px;background:#101920d9;border-block:1px solid #698f9c;box-shadow:3px 3px #0710138c;transform:rotate(-2deg)}
#home .arcade-tagline i{font-size:12px;color:#f6d22b;font-style:normal}
#home .home-bubble{top:53%;right:23px;max-width:180px;padding:11px 14px;border:3px solid #101921;background:#fff2d3;box-shadow:3px 0 #fff4da,-3px 0 #fff4da,0 3px #fff4da,0 -3px #fff4da,5px 7px #0710179c;font-size:11px;line-height:1.5;color:#263341;font-weight:800;z-index:4}
#home .home-bubble:before{color:#f9edbd;text-shadow:1px 1px #000;font-size:8px;top:-21px;right:0}
#home .home-bubble:after{border-top-color:#fff2d3}
#home .home-actions{left:29px;right:29px;bottom:25px;z-index:5}
.start-callout{display:flex;align-items:center;justify-content:center;gap:11px;font-size:11px;font-weight:700;letter-spacing:2px;color:#fff0cb;text-shadow:2px 2px #08121b;margin:0 0 24px}.start-callout i{height:3px;width:18px;background:#f9da31;box-shadow:3px 3px #0a8ad3}
.arcade-start{position:relative;display:block;width:100%;height:80px;padding:5px;background:#fff0af;border:0;box-shadow:4px 0 #081019,-4px 0 #081019,0 -4px #081019,0 8px #081019,6px 8px #092c42;cursor:pointer;isolation:isolate;transition:translate .1s}
.start-face{position:relative;display:flex;align-items:center;justify-content:center;gap:15px;height:100%;background:linear-gradient(#ff6148 0 5px,#ed3738 5px calc(100% - 9px),#a41328 calc(100% - 9px));border:3px solid #781728;box-shadow:inset 3px 0 #ff8060,inset -3px 0 #b2192d;color:#fff9df;overflow:hidden;padding-bottom:5px}
.start-face b{font-size:28px;letter-spacing:3px;text-shadow:3px 3px #7b1726;font-weight:900}
.start-face:after{content:'';position:absolute;width:6px;top:0;bottom:8px;right:13px;background:#ff8a6855;transform:skew(-25deg);box-shadow:9px 0 #ff8a6830;pointer-events:none}
.start-key{position:absolute;top:-15px;left:14px;z-index:2;background:#fadc30;border:3px solid #111721;color:#142338;box-shadow:2px 2px #081019;font:900 10px/1 monospace;letter-spacing:2px;padding:5px 10px;transform:rotate(-4deg)}
.start-play{font-size:20px;color:#ffdc3d;text-shadow:3px 3px #801529}.start-arrow{position:absolute;right:15px;top:12px;font:900 34px monospace;color:#fff2ce;letter-spacing:-9px;animation:arrow-nudge 1.6s steps(2) infinite}
.arcade-start:hover{translate:0 -2px}.arcade-start:hover .start-face{filter:brightness(1.12)}.arcade-start:active{translate:0 5px;box-shadow:4px 0 #081019,-4px 0 #081019,0 -4px #081019,0 3px #081019}.arcade-start:focus-visible{outline:3px solid #62d8ff;outline-offset:7px}
#home .secondary-row{gap:14px;margin-top:23px}
#home .secondary-row button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:8px 5px;background:#162733e8;border:2px solid #698b9a;box-shadow:2px 3px #020c13,inset 0 2px #294150;color:#e4edf0;font-weight:700;font-size:11px}
#home .secondary-row button:hover{background:#294759;border-color:#b6e4ee}
#home .secondary-row small{font:700 10px monospace;color:#ffe071}
.menu-symbol{font:700 15px monospace;color:#58c9f5}
#home .home-footer{margin-top:16px;color:#8ba4b0;font-size:8px;letter-spacing:.5px}
#home .home-footer span:last-child{font:7px monospace;letter-spacing:1px}
@keyframes logo-arrive{from{opacity:0;transform:translateY(-14px) scale(.95)}to{opacity:1;transform:none}}
@keyframes arrow-nudge{0%,100%{translate:0 0}50%{translate:3px 0}}
@media(max-height:760px){#home .home-title{top:46px;left:10px;right:10px}#home .arcade-logo{max-height:205px}#home .arcade-tagline{font-size:8px;margin-top:0;padding:4px 11px}#home .home-bubble{top:51%;font-size:10px}#home .home-actions{bottom:19px;left:28px;right:28px}.arcade-start{height:68px}.start-face b{font-size:25px}.start-arrow{font-size:30px;top:8px}.start-callout{font-size:10px;margin-bottom:21px}#home .secondary-row{margin-top:18px}#home .secondary-row button{min-height:37px}#home .home-footer{margin-top:13px}}
@media(prefers-reduced-motion:reduce){#home .arcade-logo,.start-arrow{animation:none}.arcade-start{transition:none}}
/* Reserve the central portrait region: logo ends above the head. */
#home .home-title{top:48px;left:50%;right:auto;width:calc(100% - 30px);max-width:365px;transform:translateX(-50%)}
#home .arcade-logo{max-height:190px}
#home .arcade-tagline{margin-top:0;font-size:8px;padding:4px 12px}
#home .home-bubble{top:56%;right:21px}
@media(max-height:760px){#home .home-title{top:43px;width:calc(100% - 40px);max-width:320px}#home .arcade-logo{max-height:170px}#home .home-bubble{top:55%;font-size:10px}}

/* dragon-v6.css */
.royal-dragon{position:absolute;width:290px;height:290px;z-index:66;pointer-events:none;background:none;mix-blend-mode:normal}
.dragon-frames{display:block;width:100%;height:100%;background:url('assets/dragon-frames-v6.v9-1.webp') 0 0/200% 200% no-repeat;image-rendering:pixelated;animation:goldenDragonStrike 1.12s steps(1,end) forwards;filter:drop-shadow(0 0 3px #eab53b65)}
@keyframes goldenDragonStrike{0%,24.99%{background-position:0 0}25%,44.99%{background-position:100% 0}45%,77.99%{background-position:0 100%}78%,100%{background-position:100% 100%}}
.dragon-charge{position:absolute;width:92px;height:92px;border:3px solid #f9d96f;box-shadow:inset 0 0 0 3px #956223,0 0 0 3px #ffe5a433;clip-path:polygon(30% 0,70% 0,70% 10%,90% 10%,90% 30%,100% 30%,100% 70%,90% 70%,90% 90%,70% 90%,70% 100%,30% 100%,30% 90%,10% 90%,10% 70%,0 70%,0 30%,10% 30%,10% 10%,30% 10%);pointer-events:none;background:transparent}
.dragon-trail{position:absolute;width:5px;height:5px;background:#ffe29b;box-shadow:5px 0 #dba344,0 5px #dba344;pointer-events:none;z-index:64}
@media(prefers-reduced-motion:reduce){.dragon-frames{animation:none}.dragon-charge,.dragon-trail{display:none}}

/* fan-hand-v6.css */
#hand{display:block;position:relative;height:188px;padding:0;overflow:visible;isolation:isolate;background:radial-gradient(ellipse at 50% 100%,#6c4c2430,transparent 70%),linear-gradient(#251c12,#17130d);border-top:1px solid #775732}
#hand .card{position:absolute;left:calc(50% + var(--fan-x));bottom:9px;width:106px;height:150px;margin:0!important;translate:none!important;transform:translateX(-50%) translateY(var(--fan-rise)) rotate(var(--fan-angle))!important;transform-origin:50% 100%;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s;box-shadow:2px 3px 5px #0009}
#hand .card.selected,#hand .card:focus-visible{transform:translateX(-50%) translateY(-31px) rotate(0deg) scale(1.09)!important;z-index:30!important;box-shadow:0 0 0 2px #bcdfbe,0 0 0 4px #42694e,0 0 12px #99d6ab66}
@media(hover:hover){#hand .card:hover{transform:translateX(-50%) translateY(-31px) rotate(0deg) scale(1.09)!important;z-index:31!important;box-shadow:0 0 0 2px #bcdfbe,0 0 0 4px #42694e,0 0 12px #99d6ab66}}
#hand .card-title{font-size:9px;left:14px}#hand .card-effect{font-size:8px;line-height:1.35}#hand .card .art{inset:19px 0 36px}#hand .card-cost{left:-9px;top:-10px}
.hand-help{height:20px;padding-top:4px;font-size:8px}
#card-inspect{bottom:228px}
@media(max-height:760px){#hand{height:167px}#hand .card{width:94px;height:134px;bottom:8px}#hand .card-title{font-size:8px;left:12px}#hand .card-effect{font-size:7px}#hand .card .art{inset:16px 0 31px}.hand-help{height:18px;font-size:7px}#card-inspect{bottom:207px}}
@media(prefers-reduced-motion:reduce){#hand .card{transition:none}}

/* stages-v7.css */
.enemy-name small{display:block;margin-top:2px;letter-spacing:1px;font-size:8px;color:#b5d8b6}
.enemy-hero[data-stage="1"] .enemy-name small{color:#f4d378}
.enemy-hero[data-stage="2"] .enemy-name small{color:#ffb071}
.enemy-hero[data-stage="3"] .enemy-name small{color:#ffa199}
.enemy-hero[data-stage="3"] #speech{border-bottom-color:#bd5b3a}
.hot .enemy-portrait{filter:none}
#enemy-hero .enemy-name{top:8px;bottom:auto;text-shadow:1px 2px #171009}
#enemy-hero #speech{left:10px;right:auto;top:auto;bottom:8px;max-width:128px;font-size:9px;line-height:1.4;padding:4px 6px}

/* result-v8.css */
#dialog.result-dialog{--result-accent:#f5d671;width:360px;max-width:calc(100vw - 34px);max-height:calc(100svh - 36px);padding:0 19px 19px;border:3px solid #ae9360;border-image:none;background:#121f24;box-shadow:0 0 0 3px #111710,0 0 0 5px #5c523b,0 22px 80px #000b;color:#f6e4bc;overflow-y:auto;text-align:center;animation:result-open .3s steps(6) both}
#dialog.result-dialog::backdrop{background:#080d13d9;backdrop-filter:none}
#dialog.result-dialog .dialog-top{justify-content:center;height:32px;color:var(--result-accent);font:800 10px monospace;letter-spacing:5px;background:#0c161a;margin:0 -19px;border-bottom:1px solid #61757266}
#dialog.result-dialog #dialog-title{font-size:29px;line-height:1.3;margin:17px 0 12px;font-weight:900;letter-spacing:1px;color:#fff0c2;text-shadow:2px 3px #805830;position:relative;z-index:2}
#dialog.result-dialog #dialog-body{display:flex;flex-direction:column;color:#bfcac6;font-size:11px;line-height:1.5}
.result-scene{position:relative;height:169px;flex-shrink:0;margin:0 -19px;border-block:2px solid #8f774b;overflow:hidden;background:#1d1812}
.result-character{position:absolute;inset:0;background:url('assets/chouchou-stages-v7.v9-1.webp') 100% 100%/200% 200%;image-rendering:pixelated}
.result-scene:after{content:'';position:absolute;inset:65% 0 0;background:linear-gradient(transparent,#101b22b0);pointer-events:none}
.result-seal{position:absolute;left:12px;bottom:12px;z-index:2;padding:5px 11px;background:#f3ce57;border:2px solid #171b1b;color:#3b2418;box-shadow:3px 3px #0009;font-size:13px;font-weight:900;letter-spacing:2px;transform:rotate(-5deg)}
.result-scene i{position:absolute;width:5px;height:5px;background:#ffe2a1;box-shadow:5px 0 #c8923b;left:12%;top:27%;animation:result-spark 2.3s steps(7) infinite}.result-scene i:nth-of-type(2){left:86%;top:22%;animation-delay:-.8s}.result-scene i:nth-of-type(3){left:76%;top:71%;animation-delay:-1.6s}
#dialog.result-dialog .result-quote{margin:15px 0 14px;color:#afc0bd;font-size:11px;line-height:1.6}
.result-scoreboard{display:flex;justify-content:center;align-items:center;gap:16px;padding:12px 7px;background:#0c171c;border:1px solid #586659;box-shadow:inset 0 2px #233c3c;position:relative}
.result-scoreboard>div{flex:1}.result-scoreboard small{display:block;color:#b4c4ba;font-size:10px;letter-spacing:1px}.result-scoreboard strong{display:block;margin-top:4px;color:#c4e6ce;font:bold 32px/1.1 Georgia}.result-scoreboard>div:last-child strong{color:#f0a381}.result-scoreboard em{font:10px monospace;font-style:normal;color:#7d9694;margin-left:3px}.result-vs{font:italic 15px Georgia;color:#8c866c}
.result-record{display:flex;justify-content:space-around;gap:5px;padding:13px 0 4px;color:#849d9f;font-size:10px}.result-record b{color:#e0ceb0;font:700 15px monospace;margin-right:3px}
#dialog.result-dialog #dialog-actions{display:grid;grid-template-columns:1fr;margin:16px 0 0;gap:11px}
#dialog.result-dialog #dialog-actions button{min-height:41px;border:1px solid #6d868a;border-image:none;background:#172c34;box-shadow:inset 0 1px #324b4c;color:#c9dbd8;padding:9px;font-weight:700;font-size:12px;letter-spacing:2px}
#dialog.result-dialog #dialog-actions button:first-child{min-height:49px;background:linear-gradient(#f26344 0 3px,#d84033 3px calc(100% - 5px),#912a2b calc(100% - 5px));border:3px solid #ecd09a;color:#fff6d8;font-size:18px;box-shadow:0 3px #070f14;text-shadow:2px 2px #7c2924}
#dialog.result-dialog #dialog-actions button:first-child:before{content:'▶';font-size:12px;color:#ffdc76;margin-right:12px}
#dialog.result-dialog #dialog-actions button:hover{filter:brightness(1.15)}#dialog.result-dialog #dialog-actions button:active{translate:0 2px}#dialog.result-dialog #dialog-actions button:focus-visible{outline:2px solid #8ddbe1;outline-offset:3px}
#dialog[data-result="loss"]{--result-accent:#f0a798}#dialog[data-result="loss"] #dialog-title{font-size:25px;color:#f3c6b3;text-shadow:2px 3px #533c3e}#dialog[data-result="loss"] .result-character{background-position:0 0}#dialog[data-result="loss"] .result-seal{background:#c78d71;color:#201b18}#dialog[data-result="loss"] .result-scene i{display:none}
#dialog[data-result="draw"]{--result-accent:#a8d5db}#dialog[data-result="draw"] .result-character{background-position:100% 0}#dialog[data-result="draw"] .result-seal{background:#a9cdd0}#dialog[data-result="draw"] .result-scene i{display:none}
@keyframes result-open{from{opacity:0;transform:translateY(15px) scale(.97)}to{opacity:1;transform:none}}
@keyframes result-spark{0%,100%{opacity:0;translate:0 5px}40%{opacity:1}80%{opacity:0;translate:0 -14px}}
@media(max-height:700px){#dialog.result-dialog{padding-bottom:14px}#dialog.result-dialog #dialog-title{font-size:25px;margin-block:12px}.result-scene{height:140px}#dialog.result-dialog .result-quote{margin-block:11px}.result-scoreboard{padding-block:9px}.result-record{padding-top:10px}#dialog.result-dialog #dialog-actions{margin-top:12px}}
@media(prefers-reduced-motion:reduce){#dialog.result-dialog,.result-scene i{animation:none}}

/* car-v8.css */
.sports-car-vfx{position:absolute;width:250px;height:250px;background:none;mix-blend-mode:normal;pointer-events:none;z-index:66}
.sports-car-frames{display:block;width:100%;height:100%;background:url('assets/car-frames-v8.v9-1.webp') 0 0/200% 200% no-repeat;image-rendering:pixelated;animation:sports-car-strike 1.02s steps(1,end) forwards}
@keyframes sports-car-strike{0%,23.99%{background-position:0 0}24%,42.99%{background-position:100% 0}43%,78.99%{background-position:0 100%}79%,100%{background-position:100% 100%}}
.car-skid{position:absolute;width:125px;height:27px;border-block:3px dashed #efd797;background:transparent;pointer-events:none;z-index:64}
@media(prefers-reduced-motion:reduce){.sports-car-frames{animation:none}.car-skid{display:none}}

/* leaderboard.css */
.challenge-entry{width:100%;margin:8px 0 0;padding:9px;color:#ffe0a0;background:#24271d;border:1px solid #b68d46;box-shadow:inset 0 0 0 2px #141912;font:inherit;cursor:pointer}.challenge-dialog{box-sizing:border-box;width:min(92vw,420px);max-height:88dvh;overflow:auto;padding:22px;color:#f9e5b7;background:linear-gradient(145deg,#34271c,#151a17);border:3px double #c89d59;box-shadow:0 12px 60px #000c;font-family:inherit}.challenge-dialog::backdrop{background:#090908c9}.challenge-dialog h2{font-size:24px;margin:8px 0 12px}.challenge-dialog small{color:#d4ae65;letter-spacing:2px}.challenge-dialog p{font-size:12px;line-height:1.7;color:#cbb99a}.challenge-row{display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid #6b563c}.challenge-row span{overflow-wrap:anywhere}.challenge-row b{color:#ad956b}.challenge-row:nth-child(-n+3) b,.challenge-row:nth-child(-n+3) strong{color:#ffce67}.challenge-row strong{font-variant-numeric:tabular-nums}.challenge-close,.challenge-result button{padding:10px 14px;border:1px solid #b8975d;background:#304338;color:#f7dfaf;cursor:pointer;font:inherit}.challenge-close{width:100%}.challenge-result{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #8f703d}.challenge-result strong,.challenge-result small{width:100%}.challenge-result small{font-size:11px;color:#cbb99a}.challenge-result button{font-size:12px;flex:1}.challenge-result button:disabled{opacity:.65}

.unit.sam-awaken{animation:sam-awaken .8s steps(8,end)}@keyframes sam-awaken{0%{filter:brightness(3) hue-rotate(60deg);transform:scale(.8)}50%{filter:brightness(1.6);box-shadow:0 0 22px #7fffe1;transform:scale(1.08)}100%{filter:none;transform:scale(1)}}

/* upgrade-v12.css */
.airship-vfx{position:absolute;width:240px;height:128px;pointer-events:none;z-index:20;filter:drop-shadow(3px 5px 0 #241e2480)}.airship-vfx svg{display:block;width:100%;height:100%;background:transparent;overflow:visible}.airship-propeller{transform-origin:61px 92px;animation:airship-spin .18s steps(4,end) infinite}@keyframes airship-spin{to{transform:rotate(360deg)}}
.enemy-heat{position:relative}.proof-badge{position:absolute;right:9px;top:-19px;padding:3px 8px;background:#ffca64;color:#42261c;border:2px solid #fff0b1;font-size:11px;font-weight:900;box-shadow:2px 2px 0 #542b1c;z-index:12;letter-spacing:1px}.proof-badge[hidden],.proof-detail[hidden]{display:none!important}.enemy-heat.proof-marked{outline:2px solid #ffcb69;box-shadow:0 0 16px #ffb94855}.proof-detail{font-size:10px;font-weight:bold;color:#ffd88b;margin-left:auto;padding:2px 5px;background:#61372c;border:1px solid #ac7c49}.proof-target{box-shadow:inset 0 0 0 2px #ffcd7588!important}.card.proof-combo{outline:2px solid #ffe096;filter:drop-shadow(0 0 5px #ffbd57);}.card.proof-combo .card-effect{color:#8f2b19;font-weight:900}.challenge-result .time-locked{color:#c5f0cd}.challenge-result .challenge-note{line-height:1.6}
@media(prefers-reduced-motion:reduce){.airship-propeller{animation:none}.airship-vfx{filter:none}}
.enemy-heat .proof-badge{color:#42261c!important;text-shadow:none}

/* Guard is a target-priority rule, not extra damage absorption. */
.unit .guard-shell{position:absolute;inset:-7% -6%;width:112%;height:114%;z-index:4;pointer-events:none;overflow:visible;filter:drop-shadow(0 0 4px #76e5db88)}
.unit.guard{overflow:visible!important}
.guard-shell .shield-glass{fill:#8eece8;fill-opacity:.07;stroke:none}
.guard-shell .shield-rim{fill:none;stroke:#9ef7ed;stroke-width:2.4;stroke-opacity:.88;vector-effect:non-scaling-stroke}
.guard-shell .shield-glint{fill:none;stroke:#eefff8;stroke-width:2;stroke-linecap:square;vector-effect:non-scaling-stroke;animation:guard-shimmer 2.8s ease-in-out infinite}
.unit.guard .unit-name,.unit.guard .stat,.unit.guard .unit-state{z-index:6}
.unit.guard .unit-state{background:#18493e!important;color:#e6fff4!important;border:1px solid #91dccc;text-shadow:none}
@keyframes guard-shimmer{0%,100%{opacity:.35}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.guard-shell .shield-glint{animation:none}}

/* polish-v12-3.css */
.unit .guard-shell{animation:guard-breathe 2.2s ease-in-out infinite;will-change:opacity}
.guard-shell .shield-glass{animation:guard-glass 2.2s ease-in-out infinite}
.guard-shell .shield-glint{animation:guard-shimmer 2.2s ease-in-out infinite}
.unit:nth-child(2) .guard-shell,.unit:nth-child(2) .shield-glass{animation-delay:-.7s}
.unit:nth-child(3) .guard-shell,.unit:nth-child(3) .shield-glass{animation-delay:-1.4s}
@keyframes guard-breathe{0%,100%{opacity:.42}50%{opacity:1}}
@keyframes guard-glass{0%,100%{fill-opacity:.025}50%{fill-opacity:.14}}
.voice-replay{display:block;margin:12px auto 0;background:transparent;border:1px solid #aa8051;color:#efc77e;padding:7px 14px;font:inherit;font-size:12px;cursor:pointer}
.challenge-dialog{width:min(94vw,470px);padding:0 18px 16px;background:repeating-linear-gradient(0deg,#0000 0 3px,#0000000c 3px 4px),radial-gradient(ellipse at 50% 0,#534127,#221c17 55%);border:3px double #c7a365;box-shadow:0 0 0 4px #171713,0 24px 80px #000d;scrollbar-color:#90703e #201c16}
.rank-header{text-align:center;padding:22px 0 10px;border-bottom:1px solid #806440;margin-bottom:16px;position:relative}
.rank-header small{font-size:9px;letter-spacing:3px;color:#bba27c}.rank-header h2{font-family:KaiTi,STKaiti,serif;font-size:34px;letter-spacing:6px;margin:4px 0;color:#ffe5ad;text-shadow:2px 3px #604126}.rank-header p{margin:4px 0;font-size:11px;letter-spacing:2px;color:#c0aa84}.rank-star{font-size:22px;color:#e8bc60;margin-top:10px}
.rank-podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:7px;align-items:end;padding:8px 0 0}
.rank-champion{--metal:#bfcdd2;position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;min-width:0;padding:12px 5px 0;background:linear-gradient(#49585d44,#282a27);border:1px solid var(--metal);box-shadow:inset 0 0 0 3px #171b18;isolation:isolate}
.rank-champion.place-1{--metal:#f2cd73;padding-top:18px;background:radial-gradient(ellipse at top,#bb823653,#4a3319 65%,#34281d);box-shadow:inset 0 0 0 3px #352617,0 0 22px #e8b95933}
.rank-champion.place-3{--metal:#cc9570;background:linear-gradient(#81583c44,#30251f)}
.rank-medal{width:48px;color:var(--metal);filter:drop-shadow(2px 3px 0 #0009)}.place-1 .rank-medal{width:66px;animation:crown-glow 3s ease-in-out infinite}
.rank-champion small{font-size:9px;letter-spacing:0;color:var(--metal);margin:5px 0 8px}.rank-champion b{font-size:13px;line-height:1.5;width:100%;min-height:39px;overflow-wrap:anywhere;color:#f9e7c9;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rank-champion strong{font-family:Georgia,serif;font-variant-numeric:tabular-nums;font-size:18px;color:var(--metal);margin:8px 0 10px;white-space:nowrap}.place-1 strong{font-size:23px}.podium-rank{font:25px Georgia,serif;display:block;width:100%;padding:6px 0;color:var(--metal);border-top:1px solid #ac90614d;background:#0002}.place-1 .podium-rank{padding:12px 0}.place-3 .podium-rank{padding:3px 0}
.rank-divider{display:flex;align-items:center;justify-content:center;color:#c5a26b;font-size:10px;letter-spacing:3px;margin:20px 0 8px}.rank-roster{border-top:1px solid #8c7047;border-bottom:1px solid #8c7047}
.challenge-row{grid-template-columns:28px minmax(0,1fr) auto;padding:9px 8px;gap:8px;border-bottom:1px solid #b28f5a20;font-size:12px}.challenge-row:nth-child(even){background:#fff4d506}.challenge-row:last-child{border-bottom:0}.challenge-row b,.challenge-row:nth-child(-n+3) b{font:14px Georgia,serif;color:#b79c70}.challenge-row strong,.challenge-row:nth-child(-n+3) strong{font:15px Georgia,serif;font-variant-numeric:tabular-nums;color:#e1cca9}.challenge-row span{color:#ead6b4}.challenge-row.vacant{opacity:.38}
.challenge-dialog .challenge-note{text-align:center;font-size:10px;color:#ad9879;line-height:1.8;margin:14px 0}.challenge-close{background:linear-gradient(#42564a,#26392f);border:2px solid #ac965c;box-shadow:inset 0 0 0 2px #1b2822,2px 3px #151a13;font-size:13px;letter-spacing:2px}
@keyframes crown-glow{50%{filter:drop-shadow(0 0 8px #ffe09a99)}}
@media(max-width:360px){.challenge-dialog{padding:0 10px 12px}.rank-champion strong{font-size:16px}.place-1 strong{font-size:20px}.rank-header h2{font-size:30px}}
@media(prefers-reduced-motion:reduce){.unit .guard-shell,.guard-shell .shield-glass,.guard-shell .shield-glint,.place-1 .rank-medal{animation:none}}
.challenge-dialog .rank-header{display:block;height:auto;min-height:0}.challenge-dialog .rank-header h2{white-space:nowrap;border:0;padding:0}.challenge-dialog .rank-header small{display:block}


/* responsive-v15.css */
/* One responsive layout after the historic skins. Keep art proportions and
   allow scrolling on tiny/landscape screens instead of clipping controls. */
html{min-width:280px;overflow-x:hidden}
body{margin:0;min-height:100svh;overflow-x:hidden;overscroll-behavior-x:none}
#app{width:min(100%,480px);height:100vh;height:100dvh;min-height:600px;max-height:1040px;margin:0 auto;box-sizing:border-box;overflow:hidden;--card-width:100px;--card-height:140px;--hand-height:164px;--enemy-height:clamp(90px,16dvh,164px);--dock-height:56px}
.screen{max-width:100%;box-sizing:border-box}
#battle{display:grid;grid-template-rows:40px var(--enemy-height) 24px minmax(228px,1fr) var(--dock-height) 26px var(--hand-height) 20px;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);gap:0}
#battle[hidden]{display:none}
.battle-header,.enemy-hero,.player-dock,.mana-row,#hand,.hand-help{min-height:0;max-height:none;height:100%;box-sizing:border-box}
.battle-header{padding:0 7px;gap:4px;letter-spacing:0;z-index:5}
.battle-header .icon{width:36px;height:36px;flex-shrink:0}
.battle-header .match-type{font-size:9px;white-space:nowrap}
.enemy-hero{margin:0;min-height:0;max-height:none}
.enemy-portrait{height:100%}
.enemy-heat{height:24px;min-height:0;padding:3px 13px;box-sizing:border-box}
.board{min-height:0;min-width:0;display:grid;grid-template-rows:minmax(76px,1fr) 44px minmax(76px,1fr);padding:13px 17px 14px;border-width:8px;gap:8px}
.board-label{display:none}
.unit-row{min-height:0;height:auto;max-height:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:0;align-items:center}
.slot{height:calc(100% - 8px);width:min(100%,98px);max-height:140px;min-height:0;min-width:0;aspect-ratio:auto;justify-self:center;align-self:center}
.unit .unit-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px}
.unit .unit-state{white-space:nowrap;font-size:7px}
.board-middle{height:44px;min-height:44px;margin:0 -17px;padding:0 10px;gap:5px}
.turn-mark{min-width:0}.turn-mark small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;max-width:190px}
#end-turn{min-width:100px;min-height:40px;padding:5px 9px;font-size:12px;flex-shrink:0}
.player-dock{padding:5px 12px;gap:8px}
#player-avatar{width:40px;height:40px;min-width:40px}
.player-info{min-width:0;flex:1}.player-info>b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}
#hero-skill{height:100%;min-height:40px;max-height:46px;min-width:107px;padding:3px 8px;flex-shrink:0;box-sizing:border-box}#hero-skill b{font-size:12px}#hero-skill small{font-size:8px}
.mana-row{padding:0 12px}.mana-row>div{gap:4px}#mana-gems{display:flex;gap:3px}#mana-gems i{width:10px;height:12px;margin:0}
#hand{overflow:visible;padding:0;min-width:0}
#hand .card{width:var(--card-width);height:var(--card-height);bottom:10px;touch-action:none}
#hand .card .art{inset:19px 0 33px}
#hand .card-title{font-size:9px;left:13px}#hand .card-effect{font-size:8px;line-height:1.35}
.hand-help{padding:3px 5px 0;text-align:center;font-size:8px}
#card-inspect{left:12px;right:12px;bottom:calc(var(--hand-height) + 23px + env(safe-area-inset-bottom,0px));max-height:calc(100% - 190px);overflow-y:auto;box-sizing:border-box;z-index:50}
#play-card,#close-inspect{min-height:40px}#close-inspect{min-width:40px}
#toast{max-width:calc(100% - 24px);box-sizing:border-box}
#opponent-hand{pointer-events:none}
#select{overflow-y:auto;padding-bottom:max(20px,env(safe-area-inset-bottom,0px));scroll-padding-bottom:20px}
#nickname{font-size:16px;min-height:44px;box-sizing:border-box}
#select #hero-preview{min-height:160px}
#select .select-bottom{position:relative;margin-top:18px;inset:auto}
#select #battle-start{min-height:48px}
dialog{max-width:min(440px,calc(100vw - 24px));max-height:calc(100dvh - 32px);box-sizing:border-box;overflow-y:auto;overscroll-behavior:contain}
.challenge-dialog{width:min(440px,calc(100vw - 24px));padding:18px 14px}
.rank-champion{min-width:0}.rank-champion b{overflow-wrap:anywhere}.rank-champion strong{font-size:clamp(19px,6vw,29px)}
.showcase-toggle{display:none}
@media(max-width:700px){.desktop-note{display:none}.showcase-toggle{display:block;position:fixed;right:10px;top:45px;z-index:999;background:#3e2d20;color:#ffdfa6;border:1px solid #ad834f;padding:8px}.showcase-controls{display:none!important;top:82px!important;max-height:calc(100dvh - 100px);overflow-y:auto}.showcase-controls.is-open{display:grid!important}}
@media(max-height:760px){
 #app{--card-width:90px;--card-height:128px;--hand-height:148px;--enemy-height:88px;--dock-height:50px}
 #battle{grid-template-rows:36px var(--enemy-height) 22px minmax(224px,1fr) var(--dock-height) 24px var(--hand-height) 18px}
 .battle-header .icon{height:34px;width:34px}.enemy-heat{height:22px}.enemy-name{top:7px!important}.enemy-hero #speech{font-size:10px;bottom:8px}.enemy-resource{top:7px!important;bottom:auto!important}
 .slot{width:min(100%,86px);max-height:118px}.board{padding:11px 17px 13px;gap:7px;grid-template-rows:minmax(72px,1fr) 40px minmax(72px,1fr)}.board-middle{height:40px;min-height:40px}
 #hand .card-title{font-size:8px}#hand .card-effect{font-size:7px}#hand .card .art{inset:17px 0 30px}
 #player-avatar{width:36px;height:36px;min-width:36px}
}
@media(max-height:660px){
 #app{--card-width:84px;--card-height:116px;--hand-height:130px;--enemy-height:76px;--dock-height:48px}
 #battle{grid-template-rows:36px var(--enemy-height) 22px minmax(228px,1fr) var(--dock-height) 24px var(--hand-height) 18px}
 .slot{max-height:94px}.unit .unit-name{font-size:8px}.turn-mark small{font-size:7px}.enemy-hero #speech{display:none}
}
@media(max-width:350px){
 #app{--card-width:82px;--card-height:116px}.battle-header .match-type{max-width:74px;overflow:hidden;text-overflow:ellipsis}.board{padding-inline:14px}.board-middle{margin-inline:-14px}.unit-row{gap:12px}.slot{width:min(100%,77px)}.unit .unit-name{font-size:8px}.turn-mark small{max-width:156px}#end-turn{min-width:90px;font-size:11px}.mana-row{padding-inline:8px}#mana-gems{gap:2px}#mana-gems i{width:8px}.player-dock{padding-inline:8px;gap:6px}#hero-skill{min-width:99px}.unit.guard .unit-state{font-size:6px;left:10px;right:10px}
}
@media(orientation:landscape) and (max-height:600px){
 /* A scrollable portrait board also works with the phone keyboard open. */
 #app{height:700px;min-height:700px;max-height:none;width:min(100%,480px)}
 #select{overflow-y:auto}.desktop-note{display:none}
}

/* classic-v15.css */
/* Local v15 functionality on the unchanged 14.2 visual language. */
#app{min-height:800px;--enemy-height:124px;--dock-height:70px;--hand-height:174px;--card-width:106px;--card-height:150px}
#battle{grid-template-rows:36px var(--enemy-height) 30px minmax(294px,1fr) var(--dock-height) 26px var(--hand-height) 20px}
.board{grid-template-rows:minmax(105px,1fr) 42px minmax(105px,1fr);padding:12px 16px 17px;gap:10px}
.unit-row{padding:0;gap:15px}.slot{width:min(100%,102px);height:calc(100% - 12px);max-height:144px;align-self:start}
.unit .unit-name,.unit.guard .unit-name{font-size:12px;line-height:18px;top:-2px;left:-4px;right:-4px;padding:1px 0;letter-spacing:0;z-index:6}
.unit .art{inset:18px 0 12px}
.unit .unit-state,.unit.guard .unit-state{font-size:9px;bottom:-11px!important;left:8px;right:8px;line-height:14px;height:15px;padding:0;z-index:6}
.unit .stat{font-size:23px;bottom:1px;z-index:7}
.unit .guard-shell{inset:0 1px 2px;width:calc(100% - 2px);height:calc(100% - 2px);z-index:4;opacity:.5;filter:none;animation:none;pointer-events:none}
.guard-shell .shield-glass{fill:#74ddc8;fill-opacity:.025;stroke:none}
.guard-shell .shield-rim{fill:none;stroke:#a8e5cb;stroke-width:2;opacity:.75}
.guard-shell .shield-inner{fill:none;stroke:#d5f8e1;stroke-width:1;opacity:.35}
.guard-shell .shield-glint{fill:none;stroke:#e3fff0;stroke-width:2}.guard-shell .shield-emblem{display:none}
.unit.golden-unit{box-shadow:0 0 0 1px #ddc081,0 0 9px #d6ae4944}
.gold-foil-v15{position:absolute;inset:20px 2px 18px;overflow:hidden;pointer-events:none;z-index:3}
.gold-foil-v15 i{position:absolute;top:-35%;left:-95%;width:65%;height:180%;background:linear-gradient(90deg,transparent,#fff1bc66,transparent);transform:rotate(22deg);animation:classic-foil-v15 4.6s ease-in-out infinite}
@keyframes classic-foil-v15{0%,64%{left:-95%}95%,100%{left:160%}}
.gold-star-v15{display:none}
.board-middle{height:42px;min-height:42px;margin:0 -14px;padding:0 8px}.turn-mark span{font-size:13px;letter-spacing:0}.turn-mark small{font-size:10px;line-height:16px;max-width:210px}
#end-turn{height:39px;min-height:39px;min-width:108px;padding:4px 8px;font-size:13px}
.enemy-name b{font-size:14px}.enemy-name small{font-size:10px}.enemy-resource{font-size:10px!important}
.enemy-heat{height:30px;padding:3px 12px}.heat-panel>span{font-size:12px}.heat-panel b{font-size:15px}
.player-console-v15{grid-row:5/span 2;display:grid;grid-template-rows:minmax(0,1fr) 26px;min-height:0}
.player-console-v15 .player-dock{height:100%;min-height:0;gap:10px;padding:7px 12px 3px}
.player-console-v15 .mana-row{height:26px;min-height:0;font-size:10px;padding:0 12px}
#player-avatar{width:48px;height:48px;min-width:48px;cursor:pointer;flex-shrink:0}
.player-info>b{font-size:13px;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-info>span{font-size:11px;line-height:15px;margin:2px 0}.player-info strong{font:700 12px Georgia}
#hero-skill{min-width:114px;height:53px;min-height:53px;max-height:53px;padding:3px 6px;display:flex;flex-direction:column;justify-content:center;gap:3px}#hero-skill small{font-size:9px;white-space:nowrap}#hero-skill b{font-size:14px;line-height:18px}
#hand .card-title{font-size:11px;line-height:17px;left:12px;letter-spacing:0}#hand .card-effect{font-size:10px;line-height:13px;max-height:40px;overflow:hidden}#hand .card .art{inset:19px 0 41px}
#hand .card.selected{z-index:40!important}.hand-help{font-size:10px;line-height:17px;padding-top:1px}
#card-inspect{padding:16px;max-height:calc(100% - 180px);overflow-y:auto;z-index:60}#inspect-name{font-size:22px;line-height:1.4;margin:7px 0}#inspect-type{font-size:12px}#inspect-effect{font-size:14px;line-height:1.65;margin:9px 0}#play-card{font-size:14px;min-height:42px}
.card.cast-card{width:118px;height:166px;animation:none}.cast-card .card-title{font-size:12px}.cast-card .card-effect{font-size:10px;line-height:14px}.cast-card .art{bottom:42px}
.summon-caption-v15{position:absolute;left:50%;top:42%;transform:translateX(-50%);width:min(300px,calc(100% - 30px));z-index:70;padding:9px 15px;background:#292318f5;border-block:1px solid #bd9a61;text-align:center;pointer-events:none;box-shadow:0 5px 20px #0008}
.summon-caption-v15 strong{display:block;color:#ffe2a0;font-size:21px;line-height:1.5}.summon-caption-v15 span{display:block;color:#f3e3c4;font-size:13px;line-height:1.6}
.gold-sigil-v15{position:absolute;width:160px;height:160px;pointer-events:none;z-index:15}.gold-sigil-v15 svg{width:100%;height:100%}.gold-mote-v15{position:absolute;width:6px;height:6px;background:var(--gold-color);pointer-events:none;z-index:16}
.pocket-watch-v15{position:absolute;width:152px;height:180px;pointer-events:none;z-index:22}.slam-hand-v15{position:absolute;width:154px;height:154px;pointer-events:none;z-index:22}.pocket-watch-v15 img,.slam-hand-v15 img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated}
.slam-table-v15{position:absolute;width:152px;height:51px;z-index:21;pointer-events:none}.slam-table-v15 i{position:absolute;inset:0 0 27px;background:#a27240;border:4px solid #3d281d;box-shadow:inset 0 4px #e7bc79}.slam-table-v15 b,.slam-table-v15 span{position:absolute;top:21px;width:14px;height:30px;background:#6a462b;border:3px solid #302119}.slam-table-v15 b{left:15px}.slam-table-v15 span{right:15px}
.enemy-hero.evil-joe-v15 canvas{visibility:hidden}.unit.spell-target-v15{outline:2px solid #ffc472;outline-offset:4px}
.rank-tabs-v15{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:16px 0 10px}.rank-tabs-v15 button{border:1px solid #8a7149;background:#292117;color:#ddc497;padding:11px 6px;font-size:13px;line-height:1.5}.rank-tabs-v15 button[aria-selected='true']{background:#574127;color:#fff0bb;border-color:#e0bc71}.rank-context-v15{font-size:12px;line-height:1.6;text-align:center;color:#cfb88b}
.select-heading h2{font-size:24px;line-height:1.4}.hero-caption p{font-size:12px;line-height:1.6}.skill-preview p{font-size:13px;line-height:1.6}.skill-preview b{font-size:15px}.opponent-preview span{font-size:12px}.select-bottom p{font-size:12px;line-height:1.6}
#dialog-body{font-size:14px;line-height:1.7}.catalog-card b{font-size:15px}.catalog-card p{font-size:13px;line-height:1.65}.catalog-card small{font-size:11px}.challenge-note{font-size:11px;line-height:1.7}.rank-champion b{font-size:14px;line-height:1.5;overflow-wrap:anywhere}.challenge-row{font-size:13px;line-height:1.6;min-height:34px}
.enemy-portrait.animated-ready{background-image:url(assets/chouchou-stages-v7.v9-1.webp);background-size:200% auto;background-position:0 0}
@media(max-width:350px){#app{min-height:800px;--card-width:98px;--card-height:146px}.board{padding-inline:12px}.unit-row{gap:10px}.unit .unit-name,.unit.guard .unit-name{font-size:11px}.unit .unit-state,.unit.guard .unit-state{left:1px;right:1px;font-size:8px}.turn-mark small{font-size:9px;max-width:158px}#end-turn{font-size:12px;min-width:95px}.player-console-v15 .player-dock{padding-inline:8px;gap:7px}#player-avatar{width:40px;height:40px;min-width:40px}.player-info>b{font-size:12px}#hero-skill{min-width:104px}#hero-skill b{font-size:13px}.player-console-v15 .mana-row{padding-inline:8px}#mana-gems i{width:8px}.hand-help{font-size:9px}}
@media(orientation:landscape) and (max-height:600px){#app{height:800px;min-height:800px;max-height:none}}
@media(prefers-reduced-motion:reduce){.gold-foil-v15 i{animation:none}}
#appearance-open{font-size:10px;width:36px;letter-spacing:0}.appearance-entry-v15,.avatar-select-entry-v15{padding:9px;border:1px solid #806b45;background:#2c281d;color:#dfcfa9;font-size:12px}.appearance-entry-v15{width:100%;margin:8px 0}.avatar-select-entry-v15{display:block;margin:8px auto 14px}
.appearance-dialog-v15 h3{font-size:16px;margin:18px 0 8px}.appearance-intro{font-size:12px;line-height:1.6;color:#c4b38d}.classic-table-choice{padding:12px;border:1px solid #9d8556;background:#34291c;font-size:14px}.classic-table-choice small{display:block;font-size:12px;line-height:1.6;margin-top:5px;color:#c4b38d}
.avatar-options-v15{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.avatar-choice-v15{background:#242018;border:1px solid #77633f;padding:9px 3px;color:#e4d0a7;font-size:12px;cursor:pointer;min-width:0}.avatar-choice-v15[aria-pressed='true']{border-color:#d8c28a;background:#4b422b}.avatar-choice-v15 i{display:block;width:56px;height:56px;margin:0 auto 8px;border:2px solid #ad955d;border-radius:50%;image-rendering:pixelated}.avatar-choice-v15 span{display:block;line-height:1.5}.appearance-done{display:block;width:100%;min-height:44px;margin-top:18px;background:#344a33;border:1px solid #b6a269;font-size:14px}

/* smooth-motion-v14-2-1.css */
/* Preserve 14.2 layout and pixel sprites; only motion/rasterization cost changes. */
.damage-fx{animation-timing-function:ease-out}
.heat-track i{transition-timing-function:ease-out}
#turn-banner.visible{animation-timing-function:ease-out}
.guard-shell .shield-glass{animation:none;fill-opacity:.055}
.guard-shell .shield-glint{animation:none}
.unit .guard-shell{will-change:auto}
.light-vfx-v14 .guard-shell,.light-vfx-v14 .dragon-frames,.light-vfx-v14 .airship-vfx,.light-vfx-v14 .card.proof-combo{filter:none}
.light-vfx-v14 .unit .guard-shell{animation:none;opacity:.72}
.light-vfx-v14 .card.proof-combo{outline:2px solid #ffe096}
.light-vfx-v14 .dragon-trail:nth-of-type(even){display:none}
.light-vfx-v14 dialog::backdrop{backdrop-filter:none}
@media(prefers-reduced-motion:reduce){.pixel-spark,.dragon-trail,.dragon-charge{display:none}}

/* story-v15.css */
/* Fine pixel illustration + readable copper/parchment card system. */
.art[style*="--story-image"]{overflow:hidden;background:none!important;isolation:isolate}
/* Atlas portraits must position and clip their artwork within the avatar. */
.player-portrait.art{contain:paint}
#hero-options .player-portrait.avatar{position:relative;overflow:hidden}
#hero-portrait.art[style*="--story-image"]::before{top:0;transform:none}
#hero-portrait.art[style*="chixuan-v15-8.webp"]::before{top:50%;transform:translateY(-46%)}
.art[style*="--story-image"]::before{content:"";position:absolute;left:0;top:50%;width:100%;aspect-ratio:1;background-image:var(--story-image);background-size:var(--story-size,300% 200%);background-position:var(--story-x) var(--story-y);background-repeat:no-repeat;transform:translateY(-50%);image-rendering:auto;pointer-events:none}
.unit .art[style*="--story-image"]::before,.card .art[style*="--story-image"]::before,.story-card .art[style*="--story-image"]::before{top:0;transform:none}
.card,.card.legendary,.card.cast-card,#hand .card{border:0;border-image:none;background:#ead0a1 url(assets/story-frame-v15.webp) center/100% 100% no-repeat;border-radius:4px;color:#372410;padding:0;isolation:isolate}
.card::before,.card::after,.card.legendary::after{display:none!important}
.card .art,#hand .card .art,.cast-card .art{inset:3.5% 4.8% 49.5%;border:0;z-index:0}
.card .card-title,#hand .card-title,.cast-card .card-title{top:51.5%;left:8%;right:8%;height:10.5%;bottom:auto;display:flex;align-items:center;justify-content:center;background:none;color:#34220f;text-shadow:none;font-size:12px;font-weight:800;line-height:1.1;letter-spacing:0;white-space:nowrap;padding:0;z-index:3;overflow:visible}
.card .card-effect,#hand .card-effect,.cast-card .card-effect{left:8%;right:8%;top:69%;bottom:5%;height:auto;max-height:none;display:flex;align-items:center;justify-content:center;flex-direction:column;font-size:10px;font-weight:600;line-height:1.4;color:#372610;background:none;padding:0;text-shadow:none;overflow:hidden;text-align:center;z-index:2}
.card .card-cost,#hand .card-cost{top:-6px;left:-7px;width:27px;height:31px;line-height:27px;font-size:21px;background:#295952;color:#fff3c4;border:2px solid #e8bc72;text-shadow:1px 1px #14332f;z-index:7}
.card.golden-card-v15,.card.gold-arrival{box-shadow:0 0 0 2px #e7bd68,0 0 12px #d6a6427a}
.unit,.unit.guard,.unit.legendary{border:3px ridge #bc8d50;border-image:none;border-radius:4px;background:#372919;overflow:visible;isolation:isolate}
.unit::before,.unit::after{display:none!important}
.unit .art{inset:19px 1px 19px;border:0;border-radius:1px;z-index:0}
.unit .unit-name,.unit.guard .unit-name{top:-1px;left:-1px;right:-1px;height:20px;line-height:20px;font-size:12px;font-weight:800;background:#e8cb99;color:#35230f;text-shadow:none;padding:0;overflow:visible;white-space:nowrap;border-bottom:1px solid #9b713d;z-index:7}
.unit .unit-state,.unit.guard .unit-state{left:14px;right:14px;bottom:0!important;height:18px;line-height:18px;background:#3d3020;color:#ead8b7;font-size:10px;z-index:7}
.unit.guard .unit-state{background:#264b43;color:#cff6e0}
.unit .stat{bottom:-5px;width:29px;height:28px;line-height:27px;font-size:23px;z-index:8}.unit .attack{left:-8px}.unit .health{right:-8px}
.unit.guard{border-color:#81b3a0}.unit.golden-unit{border-color:#edc879;box-shadow:0 0 0 1px #b67d31,0 0 14px #e5b64e75}
.unit .guard-shell{inset:17px 1px 16px;width:calc(100% - 2px);height:calc(100% - 33px);opacity:.5;animation:story-shield 3.4s ease-in-out infinite;z-index:4}
@keyframes story-shield{0%,100%{opacity:.22}50%{opacity:.62}}
.gold-foil-v15{inset:19px 1px 18px;border-radius:2px}.gold-foil-v15 i{left:0;transform:translateX(-180%) rotate(22deg);animation:story-gold 4.6s ease-in-out infinite}
@keyframes story-gold{0%,64%{transform:translateX(-180%) rotate(22deg)}95%,100%{transform:translateX(310%) rotate(22deg)}}
.board{border:3px ridge #927049;border-image:none;background:#32271dbb;border-radius:5px}
.board-middle{border-block:1px solid #947246;background:#24251eea;margin-inline:-12px}
#end-turn{border:0;border-image:none;background:url(assets/button-turn-v15.webp) center/100% 100% no-repeat;padding:8px 13px;color:#fff0c4;font-size:14px;text-shadow:0 1px #291b0e;min-height:44px}
#hero-skill{border:0;border-image:none;background:url(assets/button-skill-v15.webp) center/100% 100% no-repeat;padding:8px 13px;min-width:122px;color:#e8f4d6}#hero-skill b{font-size:15px}#hero-skill small{font-size:10px}
.player-console-v15{border:2px ridge #967346;background:#29261d;border-radius:4px}.player-console-v15 .player-dock{border:0;border-image:none;background:none;padding:6px 10px}.player-console-v15 .mana-row{background:none}
#player-avatar{width:54px;height:54px;min-width:54px;border:2px solid #c7a267;clip-path:none;border-radius:50%;overflow:hidden;position:relative}.player-info>b{font-size:14px}.player-info>span{font-size:12px}
.player-portrait.story-female{background-image:url(assets/chouchou-hero-v15.webp)!important;background-size:cover!important;background-position:center!important;box-shadow:0 0 10px #ffd36b6b}
.opponent-portrait.evil-joe-v15{background-image:url(assets/evil-joe-v15.webp)!important;background-size:cover;background-position:center}.enemy-hero.evil-joe-v15 .enemy-portrait{background-image:url(assets/evil-joe-v15.webp)!important;background-size:cover;background-position:center 44%}
.story-library-dialog{width:min(980px,calc(100vw - 24px));max-width:none;max-height:92dvh;padding:22px;border:2px solid #ae8650;border-image:none;background:#211d18;color:#ead7b8}
.story-library-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.story-library-head h2{margin:0;font-size:24px}.story-library-head button{width:44px;height:44px;font-size:27px;border:1px solid #87683f;background:#33291e;color:#e9cf9e}
.story-filters{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.story-filters button{padding:9px 14px;min-height:42px;border:1px solid #8d7049;background:#33291f;color:#ead3aa;font-size:13px}.story-filters button[aria-pressed=true]{background:#e3c28d;color:#302113}.story-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px 18px;padding:8px 4px 12px}
.story-card{position:relative;aspect-ratio:3/4;background:url(assets/story-frame-v15.webp) center/100% 100% no-repeat;color:#36230f;min-width:0;isolation:isolate;filter:drop-shadow(0 4px 4px #0005)}
.story-card .art{position:absolute;inset:3.5% 4.8% 49.5%;border-radius:2px}
.story-card h3{position:absolute;top:51.6%;left:8%;right:8%;height:10%;margin:0;display:flex;align-items:center;justify-content:center;font-size:clamp(15px,2.1vw,22px);line-height:1.2;text-align:center;font-weight:800;white-space:nowrap}
.story-card .story-kind{position:absolute;top:62%;height:5.5%;left:17%;right:17%;display:flex;align-items:center;justify-content:center;color:#f0dbb5;font-size:12px;white-space:nowrap;line-height:1.2}
.story-card .story-desc{position:absolute;left:9%;right:9%;top:69%;bottom:5%;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;font-size:clamp(12px,1.4vw,15px);line-height:1.55;font-weight:600;margin:0}
.story-card .story-desc strong{font-size:.9em;color:#6a441e;margin-bottom:5px}.story-card .story-cost{position:absolute;top:3%;left:3%;display:grid;place-items:center;width:32px;height:37px;background:#2c5a51;color:#fff0c4;border:2px solid #dbb678;border-radius:6px;font:bold 25px Georgia;z-index:5}
.story-card.golden{filter:drop-shadow(0 0 6px #e3ae5470)}
.avatar-options-v15{max-height:48dvh;overflow-y:auto;padding:3px}.avatar-choice-v15 i{position:relative;width:66px;height:66px;overflow:hidden}.avatar-choice-v15{font-size:13px}.avatar-choice-v15 span{min-height:20px}.appearance-dialog-v15{max-height:92dvh;overflow:auto;border-image:none;border:2px solid #9f804e;padding:20px}.appearance-dialog-v15 p{margin-block:9px}.table-options-v15{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.table-choice-v15{font-size:12px;padding:9px 3px;color:#e9d1a8;background:#33271b;border:1px solid #806540}.table-choice-v15[aria-pressed=true]{border-color:#efd09b;background:#5d462b}.table-choice-v15 i{display:block;height:34px;margin-bottom:7px;border:1px solid #9b7649;background:#392e21}.table-choice-v15[data-table=walnut] i{background:url(assets/desk-walnut-clean-v15.webp) center/cover}.table-choice-v15[data-table=jade] i{background:url(assets/desk-jade-clean-v15.webp) center/cover}
#battle[data-table=walnut] .board{background:linear-gradient(#201b1677,#201b1677),url(assets/desk-walnut-clean-v15.webp) center/cover}#battle[data-table=jade] .board{background:linear-gradient(#14282155,#14282155),url(assets/desk-jade-clean-v15.webp) center/cover}
@media(max-width:720px){.story-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px}.story-card h3{font-size:17px}.story-card .story-desc{font-size:12px;line-height:1.45}.story-library-dialog{padding:16px}.story-kind{font-size:10px!important}}
@media(max-width:440px){.story-card-grid{grid-template-columns:minmax(0,1fr);max-width:310px;margin:auto}.story-card h3{font-size:23px}.story-card .story-desc{font-size:15px;line-height:1.55}.story-card .story-kind{font-size:12px!important}.story-library-head h2{font-size:21px}.story-filters{gap:6px}.story-filters button{padding:8px 11px}}
@media(max-width:350px){.unit .unit-name,.unit.guard .unit-name{font-size:11px}.unit .unit-state{font-size:9px}#hero-skill{min-width:110px;padding-inline:12px}#player-avatar{width:46px;height:46px;min-width:46px}.player-info>b{font-size:12px}.card .card-title,#hand .card-title{font-size:11px}}
@media(prefers-reduced-motion:reduce){.gold-foil-v15 i,.unit .guard-shell{animation:none}.story-card{filter:none}}
/* 15.4: give information its own space, away from decorative borders. */
#app{--hand-height:188px;--dock-height:88px}
#battle{grid-template-rows:36px var(--enemy-height) 44px minmax(268px,1fr) var(--dock-height) 28px var(--hand-height) 20px}
.enemy-heat{border:2px solid #9c794d;border-image:none;background:linear-gradient(#35291c,#211b14);height:44px;padding:7px 12px;gap:9px;position:relative;z-index:4;box-shadow:inset 0 1px #d7b17855}
.enemy-heat::before,.enemy-heat::after{display:none!important}
.enemy-heat>span:not(.proof-badge){font-size:13px;line-height:20px;white-space:nowrap;color:#f4ac84}
.enemy-heat b{font:700 22px/26px Georgia;color:#ffdfab;letter-spacing:.3px}
.enemy-heat .heat-track{height:13px;min-width:30px;border:1px solid #b28b52;box-shadow:inset 0 2px 4px #0008}
.enemy-heat .proof-badge{position:static;flex-shrink:0;letter-spacing:0;box-shadow:none;padding:3px 5px;font-size:10px;border:1px solid #ffe2a6;line-height:14px}
.player-console-v15{background:linear-gradient(110deg,#3b2e20,#201d17 72%);border:2px solid #ae8953;box-shadow:inset 0 1px #e4c27b55}
.player-console-v15 .player-dock{padding:6px 10px;gap:10px}
#player-avatar{width:72px;height:72px;min-width:72px;border:3px ridge #d5b16d;box-shadow:0 0 0 2px #33251b,0 0 12px #dfb96238}
.player-info>b{font-size:15px;line-height:22px;color:#f5d594}
.player-info>span{display:flex;align-items:baseline;gap:5px;font-size:15px;line-height:27px;margin:0;color:#f6aa7c}
.player-info strong{font:700 24px/27px Georgia!important;color:#ffe2ad;letter-spacing:.3px}
.player-info .heat-track{height:10px;max-width:none;border:1px solid #b08b53;box-shadow:inset 0 2px 3px #0008}
#hero-skill{height:56px;min-height:56px;max-height:56px;padding:10px 11px;gap:1px;justify-content:center;min-width:126px}
#hero-skill small{font-size:10px;line-height:12px;margin:0;padding:0;color:#dfddb4}
#hero-skill b{font-size:16px;line-height:19px;margin:0;padding:0}
.player-console-v15 .mana-row{height:28px;font-size:11px;padding-inline:12px;border:0}
#mana-text{font-size:18px}.mana-row>div{gap:5px}
.card-kind{position:absolute;left:16%;right:16%;top:62%;height:6%;display:flex;justify-content:center;align-items:center;white-space:nowrap;font-size:8px;line-height:1;color:#f2dcad;z-index:4;text-shadow:none}
#hand .card-effect{top:70%;bottom:4.5%;line-height:13px;font-size:10px;white-space:normal;overflow:hidden;display:block}
#hand .card.unaffordable{filter:saturate(.85) brightness(.92)}
.card .art{background-color:#33281c!important}
.unit .unit-name,.unit.guard .unit-name{height:23px;line-height:22px;font-size:13px;background:linear-gradient(#f3dcb4,#dfbd85);border-bottom:2px ridge #b2874a;border-radius:2px 2px 0 0;color:#332212;text-shadow:0 1px #ffe8bc;white-space:nowrap;z-index:9}
.unit .art{inset:23px 1px 19px}
.unit .unit-state,.unit.guard .unit-state{height:19px;line-height:17px;font-size:10px;bottom:-1px!important;left:16px;right:16px;white-space:nowrap;padding:0;border:1px solid #9d7c4e}
.unit .stat{bottom:-6px;width:28px;height:27px;line-height:25px;font-size:23px;z-index:10}
.unit .attack{left:-8px}.unit .health{right:-8px}
.unit.guard{border:3px ridge #a3e5d0;box-shadow:0 0 0 1px #3e8077,0 0 9px #8be2d35c}
.unit.guard.golden-unit{border-color:#f1d48b;box-shadow:0 0 0 1px #c4963f,0 0 14px #e8bd6175}
.unit .guard-shell,.light-vfx-v14 .unit .guard-shell{inset:-6px -10%;width:120%;height:calc(100% + 14px);opacity:.8;animation:shield-light-v15 3s ease-in-out infinite;filter:none;z-index:6}
.guard-shell .shield-rim{stroke:#c9fff1;stroke-width:2;stroke-opacity:1;fill:none}
.guard-shell .shield-inner{fill:none;stroke:#80d9c5;stroke-width:1;stroke-opacity:.55}
.guard-shell .shield-glass{fill:#c1fff0;fill-opacity:.035;animation:none}
.guard-shell .shield-glint{stroke:#fffde3;stroke-width:2.5;animation:shield-glint-v15 3s ease-in-out infinite}
.guard-shell .shield-emblem{fill:#c1fff0;stroke:#5ba18a;stroke-width:1}
@keyframes shield-light-v15{0%,100%{opacity:.48}50%{opacity:1}}
@keyframes shield-glint-v15{0%,100%{opacity:.25}45%,65%{opacity:1}}
.unit-state .shield-icon-v15{width:11px;height:13px;vertical-align:-2px;margin-right:2px;display:inline-block}
#surrender-v15{position:absolute;right:10px;top:calc(45px + env(safe-area-inset-top,0px));z-index:8;min-height:40px;padding:6px 11px;border:1px solid #d1ad73;background:linear-gradient(#402d20ef,#271f18ee);border-radius:3px;color:#f4d8aa;font-size:12px;line-height:16px;box-shadow:inset 0 0 0 2px #34271c;text-shadow:0 1px #21170f}
#surrender-v15 small{display:block;font-size:9px;line-height:12px;color:#bfa887}#surrender-v15:active{transform:translateY(1px)}
#battle #enemy-resource{top:auto!important;bottom:8px!important;right:10px;font-size:10px}
.table-options-v15{grid-template-columns:repeat(3,minmax(0,1fr))}
.table-choice-v15[data-table=slate] i,#battle[data-table=slate] .board{background:linear-gradient(145deg,#363b3c,#202729);background-image:repeating-linear-gradient(164deg,#ffffff04 0 1px,transparent 1px 28px),linear-gradient(145deg,#363b3c,#202729)}
.table-choice-v15[data-table=leather] i,#battle[data-table=leather] .board{background-color:#483126;background-image:repeating-linear-gradient(35deg,#ffffff04 0 1px,transparent 1px 4px),repeating-linear-gradient(125deg,#0000000b 0 1px,transparent 1px 5px)}
@media(max-width:350px){
 #player-avatar{width:58px;height:58px;min-width:58px}.player-console-v15 .player-dock{gap:7px;padding-inline:8px}#hero-skill{min-width:106px;padding-inline:8px}#hero-skill small{font-size:9px}#hero-skill b{font-size:15px}.player-info>b{font-size:13px}.player-info strong{font-size:21px!important}.player-info>span{font-size:12px;gap:2px}.enemy-heat{gap:7px;padding-inline:9px}.enemy-heat b{font-size:21px}.enemy-heat>span:not(.proof-badge){font-size:12px}.enemy-heat .proof-badge{font-size:9px;padding-inline:3px}.unit .unit-name,.unit.guard .unit-name{font-size:11px}.unit .unit-state,.unit.guard .unit-state{left:12px;right:12px;font-size:9px}.unit .stat{width:25px;font-size:21px}.story-card .story-desc{font-size:13px;line-height:1.4}.story-card h3{font-size:21px}
}
@media(prefers-reduced-motion:reduce){.unit .guard-shell,.light-vfx-v14 .unit .guard-shell,.guard-shell .shield-glint{animation:none;opacity:.85}}
/* Keep the portrait tall enough after enlarging both heat panels. */
#app{min-height:860px;--enemy-height:114px;--dock-height:84px;--hand-height:182px}
#battle{grid-template-rows:36px var(--enemy-height) 44px minmax(354px,1fr) var(--dock-height) 26px var(--hand-height) 20px}
.slot{height:100%;min-height:128px;max-height:144px;align-self:center}
.player-console-v15 .mana-row{height:26px}
.unit .guard-shell,.light-vfx-v14 .unit .guard-shell{left:-12%;right:auto;top:-4%;bottom:auto;width:124%;height:116%}
.guard-shell .shield-rim{opacity:1;stroke-width:2.6}
.guard-shell .shield-inner{opacity:.55}
@media(max-width:700px){.showcase-toggle{top:auto!important;bottom:8px;right:8px}.showcase-controls{top:82px!important}}
/* Restore the familiar fanned hand, with a raised readable selected card. */
#hand{display:block;position:relative;height:100%;padding:0;overflow:visible;scrollbar-width:none;scroll-snap-type:none;touch-action:pan-y;background:radial-gradient(ellipse at 50% 100%,#6c4c2430,transparent 70%),linear-gradient(#251c12,#17130d)}
#hand .card{position:absolute;left:calc(50% + var(--fan-x));bottom:10px;width:var(--fan-card-width,112px);height:160px;margin:0!important;translate:none!important;transform:translateX(-50%) translateY(var(--fan-rise)) rotate(var(--fan-angle))!important;transform-origin:50% 100%;touch-action:none;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s}
#hand .card.selected,#hand .card:focus-visible{transform:translateX(-50%) translateY(-26px) rotate(0deg) scale(1.08)!important;z-index:40!important;outline:2px solid #b7e6c8;outline-offset:1px;box-shadow:0 0 0 3px #365445,0 0 12px #91cdac55}
#hand .card-title{font-size:12px}
@media(hover:hover){#hand .card:hover{transform:translateX(-50%) translateY(-26px) rotate(0deg) scale(1.08)!important;z-index:41!important;outline:2px solid #b7e6c8;outline-offset:1px}}
@media(prefers-reduced-motion:reduce){#hand .card{transition:none}}
.duel-person.opponent.evil-joe-v15 i{background-image:url(assets/evil-joe-v15.webp)!important;background-size:contain!important;background-position:center!important;background-repeat:no-repeat;background-color:#15354b}
.result-dialog[data-opponent='eviljoe'] .result-character{background-image:url(assets/evil-joe-v15.webp)!important;background-size:contain!important;background-position:center!important;background-repeat:no-repeat;background-color:#15354b}
.rank-avatar{width:56px;height:56px;border-radius:50%;border:2px solid var(--metal,#b9a078);position:relative;overflow:hidden;background:#332d23;flex-shrink:0;box-shadow:0 0 0 2px #252017}
.rank-avatar>i{position:absolute;inset:0;display:block;overflow:hidden;background-repeat:no-repeat}
.rank-avatar.vacant-avatar{display:grid;place-items:center;font-size:25px;color:#958265;border-style:dashed;box-shadow:none}
.rank-champion .rank-medal{width:23px;position:absolute;top:-13px;left:calc(50% - 11px);z-index:2;animation:none}
.rank-champion{padding-top:18px}.rank-champion.place-1{padding-top:23px}.place-1 .rank-avatar{width:68px;height:68px;box-shadow:0 0 0 3px #644a23,0 0 12px #e0b55755}
.rank-champion>small{font-size:9px;margin:8px 0 5px}.rank-champion>b{font-size:14px;line-height:19px;min-height:38px}
.rank-player{display:flex;align-items:center;gap:9px;min-width:0}.rank-player .rank-avatar{width:37px;height:37px}.rank-player-name{min-width:0;overflow-wrap:anywhere;font-size:13px;line-height:18px}
.challenge-row{grid-template-columns:22px minmax(0,1fr) auto;gap:7px;padding:8px 4px;min-height:55px}.challenge-row>strong{font-size:14px}
@media(max-width:350px){.rank-avatar{width:45px;height:45px}.place-1 .rank-avatar{width:56px;height:56px}.rank-player{gap:6px}.rank-player .rank-avatar{width:32px;height:32px}.rank-player-name{font-size:12px}.rank-champion>b{font-size:12px}.challenge-row>strong{font-size:13px}}

/* Joe: an uncropped tower, readable flanking UI and four heat atmospheres. */
#app.joe-match-v15{--enemy-height:148px;min-height:894px}
.joe-scene-v15{display:none;position:absolute;inset:0;background:#152b40 url(assets/joe-stages-v15-5.webp) center var(--joe-y,0%)/auto 400% no-repeat;image-rendering:pixelated;pointer-events:none;--joe-glow:#c7ffd0;overflow:hidden}
.evil-joe-v15 .joe-scene-v15{display:block}.evil-joe-v15 .enemy-portrait{animation:none;filter:none!important}
.joe-scene-v15[data-stage="1"]{--joe-glow:#ffe4a0}.joe-scene-v15[data-stage="2"]{--joe-glow:#e3a0ff}.joe-scene-v15[data-stage="3"]{--joe-glow:#ffbd66}
.joe-aura-v15{position:absolute;left:50%;top:12%;width:96px;height:112px;transform:translateX(-50%);border-radius:50% 50% 26% 26%;border:1px solid var(--joe-glow);box-shadow:inset 0 0 10px #d9eeac20,0 0 8px #ddd8b330;animation:joe-aura-v15 3.2s ease-in-out infinite}
.joe-beacon-v15,.joe-spark-v15{position:absolute;width:5px;height:5px;top:8%;left:calc(50% - 2px);background:var(--joe-glow);box-shadow:0 0 7px var(--joe-glow);animation:joe-beacon-v15 2.4s ease-in-out infinite}
.joe-spark-v15{top:58%;left:calc(50% + 44px);width:3px;height:3px;animation-delay:-1.1s}
@keyframes joe-aura-v15{0%,100%{opacity:.12}50%{opacity:.65}}@keyframes joe-beacon-v15{0%,100%{opacity:.3;transform:scale(.6)}50%{opacity:1;transform:scale(1)}}
.enemy-hero.evil-joe-v15 .enemy-name{top:12px;bottom:auto;left:12px}.enemy-hero.evil-joe-v15 #speech{top:auto;bottom:12px;left:10px;right:auto;width:116px;max-width:30%;font-size:11px;line-height:1.45;padding:6px}
.joe-paused-v15 i{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.joe-scene-v15 i{animation:none!important;opacity:.45}}

/* airship-v15-6.css */
.cosmic-airship-v156{position:absolute;pointer-events:none;z-index:35;mix-blend-mode:screen;transform-origin:center}
.cosmic-airship-v156 img{width:100%;height:100%;display:block;object-fit:contain;image-rendering:pixelated}
.cosmic-lock-v156{position:absolute;width:66px;height:66px;z-index:31;pointer-events:none;color:#81eaff}
.cosmic-lock-v156 svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2}
.cosmic-laser-v156{position:absolute;height:7px;margin-top:-3px;transform-origin:left center;background:linear-gradient(#3cc2ff,#efffff 45%,#9debff 65%,#7368ff);border-radius:50%;box-shadow:0 0 6px #6bb6fc;pointer-events:none;z-index:34}
@media(prefers-reduced-motion:reduce){.cosmic-airship-v156,.cosmic-lock-v156,.cosmic-laser-v156{display:none}}

/* navigation-v15-6.css */
#app{min-height:868px}#app.joe-match-v15{min-height:902px}
#battle{grid-template-rows:44px var(--enemy-height) 44px minmax(354px,1fr) var(--dock-height) 26px var(--hand-height) 20px}
#battle .battle-header{height:44px;padding:0 8px;gap:6px;align-items:center}
#select>header{min-height:44px;align-items:center}
#select .back-home.navigation-back-v156,#battle #leave.navigation-back-v156{display:flex;align-items:center;justify-content:center;gap:5px;flex-shrink:0;min-width:66px;width:66px;min-height:44px;height:44px;padding:3px 7px;border:2px ridge #d0ac6b;border-radius:4px;background:linear-gradient(#57422a,#33291c);color:#ffe2a4;box-shadow:inset 0 1px #f4d59755;text-shadow:0 1px #1c160f}
.navigation-back-v156 span{font:700 28px/28px Georgia}.navigation-back-v156 b{font-size:13px;line-height:20px}
.navigation-back-v156:hover{filter:brightness(1.15)}.navigation-back-v156:focus-visible{outline:2px solid #fff1cb;outline-offset:2px}
#surrender-v15{top:calc(53px + env(safe-area-inset-top,0px))}
.duel-intro{bottom:auto;height:min(100svh,100%);gap:10px}
.duel-intro .duel-person{width:min(240px,72vw);height:clamp(120px,calc((100svh - 120px)/2),220px);flex:0 0 auto}
@media(max-width:350px){#battle .battle-header{gap:4px;padding-inline:5px}.match-type{font-size:8px}#round-label{font-size:10px}}

/* character-fx-v15-6.css */
.xu-character-v156{position:absolute;z-index:35;pointer-events:none}.xu-character-v156 img{display:block;width:100%;height:100%;object-fit:contain;image-rendering:pixelated;filter:url(#xu-cutout-v156)}

/* gold-orbit-v15-6.css */
.gold-orbit-v156{position:absolute;inset:-8px;padding:3px;border-radius:10px;pointer-events:none;z-index:4;overflow:hidden;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude}
.gold-orbit-v156>i{position:absolute;inset:-80%;background:conic-gradient(from 0deg,#efad3222 0deg,#ffb938 45deg,#fff1b5 66deg,#fffde2 78deg,transparent 83deg,transparent 170deg,#e5a12b44 180deg,#f8c858 225deg,#fff4c7 249deg,transparent 255deg,transparent 360deg);animation:goldOrbitV156 4.2s linear infinite;animation-delay:var(--orbit-phase,0s);will-change:transform}
.unit.golden-unit .unit-name,.unit.golden-unit .unit-state,.unit.golden-unit .stat{z-index:6}
@keyframes goldOrbitV156{to{transform:rotate(360deg)}}
.v156-page-hidden .gold-orbit-v156>i{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.gold-orbit-v156>i{animation:none;will-change:auto}.gold-orbit-v156{opacity:.75}}

/* select-layout-v15-6-1.css */
/* The character chooser grows with its text; only the document scrolls on a
   short screen. A four-pixel description wrap must not create an inner bar. */
#app:has(#select:not([hidden])){height:auto;min-height:100dvh;max-height:none}
#select:not([hidden]){position:relative;inset:auto;min-height:100dvh;overflow:visible;padding-bottom:max(10px,env(safe-area-inset-bottom,0px))}
#select .select-bottom{margin-top:10px}

/* viewport-v15-6-3.css */
/* Reserve the hand first, then let the table share the remaining visible space.
   Explicit battle selectors override the historic 868/902px minimum heights. */
#app.battle-viewport-v1563{
 height:min(1040px,var(--battle-viewport-height,100dvh));min-height:0;max-height:none;
 --enemy-height:114px;--dock-height:78px;--hand-height:182px;
 --battle-heat-height:40px;--battle-mana-height:24px;--battle-help-height:18px;
 --battle-card-height:160px;
}
#app.battle-viewport-v1563 #battle{
 height:100%;min-height:0;overflow:hidden;
 grid-template-rows:44px var(--enemy-height) var(--battle-heat-height) minmax(0,1fr) var(--dock-height) var(--battle-mana-height) var(--hand-height) var(--battle-help-height);
}
.battle-viewport-v1563 .enemy-heat{height:100%;min-height:0;padding:4px 10px}
.battle-viewport-v1563 .board{min-height:0;grid-template-rows:minmax(0,1fr) 44px minmax(0,1fr);padding:8px 14px 10px;gap:6px}
.battle-viewport-v1563 .board-middle{height:44px;min-height:44px;margin-inline:-10px;padding-inline:5px}
.battle-viewport-v1563 .unit-row{height:100%;min-height:0;padding:0;align-items:center}
.battle-viewport-v1563 .slot{height:calc(100% - 10px);min-height:0;max-height:144px;align-self:center}
.battle-viewport-v1563 .player-console-v15{grid-template-rows:minmax(0,1fr) var(--battle-mana-height)}
.battle-viewport-v1563 .player-console-v15 .mana-row{height:var(--battle-mana-height);padding-inline:10px}
.battle-viewport-v1563 #player-avatar{width:62px;height:62px;min-width:62px}
.battle-viewport-v1563 .player-info>b{font-size:14px;line-height:20px}
.battle-viewport-v1563 .player-info>span{line-height:24px}
.battle-viewport-v1563 #hero-skill{height:52px;min-height:52px;max-height:52px}
.battle-viewport-v1563 #hand .card{height:var(--battle-card-height);bottom:10px}
.battle-viewport-v1563 .hand-help{height:var(--battle-help-height);line-height:16px;padding:0;font-size:10px}
.battle-viewport-v1563 #card-inspect{bottom:calc(var(--hand-height) + var(--battle-help-height) + env(safe-area-inset-bottom,0px));max-height:calc(100% - var(--hand-height) - var(--battle-help-height) - env(safe-area-inset-bottom,0px) - 12px)}
.battle-viewport-v1563 .duel-intro{height:100%;max-height:100%}
.battle-viewport-v1563 .duel-intro .duel-person{height:clamp(90px,calc((var(--battle-viewport-height) - 120px)/2),220px)}
#app.battle-viewport-v1563[data-battle-density=compact]{--enemy-height:90px;--dock-height:64px;--hand-height:174px;--battle-card-height:150px;--battle-heat-height:34px}
#app.battle-viewport-v1563.joe-match-v15[data-battle-density=regular]{--enemy-height:148px}
[data-battle-density=compact] .player-console-v15 .player-dock{padding:4px 8px;gap:8px}
[data-battle-density=compact] #player-avatar{width:52px;height:52px;min-width:52px}
[data-battle-density=compact] .player-info>b{font-size:13px;line-height:18px}
[data-battle-density=compact] .player-info>span{line-height:22px}
[data-battle-density=compact] .player-info strong{font-size:22px}
[data-battle-density=compact] .player-info .heat-track{height:7px}
[data-battle-density=compact] #hero-skill{height:48px;min-height:48px;max-height:48px}
[data-battle-density=compact] .unit .unit-name{height:20px;line-height:19px;font-size:12px}
[data-battle-density=compact] .unit .art{inset:19px 1px 15px}
[data-battle-density=compact] .unit .unit-state{height:16px;line-height:14px;font-size:9px}
#app.battle-viewport-v1563[data-battle-density=small]{--enemy-height:68px;--dock-height:56px;--hand-height:148px;--battle-card-height:134px;--battle-heat-height:30px;--battle-mana-height:22px;--battle-help-height:16px}
[data-battle-density=small] .board{padding:4px 12px 7px;gap:4px;grid-template-rows:minmax(0,1fr) 40px minmax(0,1fr)}
[data-battle-density=small] .board-middle{height:40px;min-height:40px}
[data-battle-density=small] #end-turn{min-height:40px;height:40px}
[data-battle-density=small] .slot{height:calc(100% - 8px)}
[data-battle-density=small] .unit .unit-name{height:18px;line-height:17px;font-size:11px}
[data-battle-density=small] .unit .art{inset:17px 1px 13px}
[data-battle-density=small] .unit .unit-state{height:14px;line-height:12px;font-size:9px;left:12px;right:12px}
[data-battle-density=small] .unit .stat{font-size:20px;width:24px;height:23px;line-height:22px;bottom:-5px}
[data-battle-density=small] .turn-mark small{font-size:9px;line-height:13px}
[data-battle-density=small] .player-console-v15 .player-dock{padding:3px 8px;gap:7px}
[data-battle-density=small] #player-avatar{width:44px;height:44px;min-width:44px}
[data-battle-density=small] .player-info>b{font-size:12px;line-height:16px}
[data-battle-density=small] .player-info>span{font-size:12px;line-height:21px}
[data-battle-density=small] .player-info strong{font-size:20px}
[data-battle-density=small] .player-info .heat-track{height:5px}
[data-battle-density=small] #hero-skill{height:44px;min-height:44px;max-height:44px;padding:4px 8px;min-width:110px}
[data-battle-density=small] #hero-skill b{font-size:14px;line-height:17px}
[data-battle-density=small] #hero-skill small{font-size:9px;line-height:11px}
[data-battle-density=small] .enemy-heat b{font-size:22px;line-height:24px}
[data-battle-density=small] .enemy-heat .heat-track{height:10px}
[data-battle-density=small] #hand .card-title{font-size:11px}
[data-battle-density=small] #hand .card-effect{font-size:10px;line-height:12px}
[data-battle-density=small] .enemy-hero #speech{display:none}
/* Short deployed cards keep the character's face in view, not just the top of
   the square atlas image. The original illustration and atlas are unchanged. */
.battle-viewport-v1563:is([data-battle-density=compact],[data-battle-density=small]) .unit .art[style*="--story-image"]::before{top:50%;transform:translateY(-40%)}
.battle-viewport-v1563:is([data-battle-density=compact],[data-battle-density=small]) .unit[data-character=drugs] .art[style*="--story-image"]::before{transform:translateY(-25%)}
.battle-viewport-v1563:is([data-battle-density=compact],[data-battle-density=small]) .unit[data-character=pigboy] .art[style*="--story-image"]::before{transform:translateY(-45%)}
/* Landscape phones use both columns rather than an off-screen portrait board. */
#app.battle-viewport-v1563[data-battle-landscape=true]{width:min(100%,960px);--hand-height:160px;--battle-card-height:142px;--enemy-height:88px}
#app.battle-viewport-v1563[data-battle-landscape=true] #battle{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:44px 88px 30px minmax(0,1fr) 24px;column-gap:8px}
[data-battle-landscape=true] #battle .battle-header{grid-column:1/-1;grid-row:1}
[data-battle-landscape=true] #enemy-hero{grid-column:1;grid-row:2}
[data-battle-landscape=true] .enemy-heat{grid-column:1;grid-row:3}
[data-battle-landscape=true] .board{grid-column:1;grid-row:4/6}
[data-battle-landscape=true] .player-console-v15{grid-column:2;grid-row:2}
[data-battle-landscape=true] #hand{grid-column:2;grid-row:3/5}
[data-battle-landscape=true] .hand-help{grid-column:2;grid-row:5}
[data-battle-landscape=true] #surrender-v15{right:calc(50% + 12px)}
[data-battle-landscape=true] #card-inspect{left:8px;right:auto;width:calc(50% - 16px);bottom:8px;max-height:calc(100% - 60px)}

#connection-status{margin:6px 0;text-align:center;color:#edd49b;font-size:13px;line-height:1.4}
