@font-face{font-family:GameKai;src:url('assets/fonts/CardKai.woff2') format('woff2');font-display:swap}
@font-face{font-family:GameSerif;src:url('assets/fonts/CardSerif.woff2') format('woff2');font-weight:200 900;font-display:swap}
@font-face{font-family:GameSans;src:url('assets/fonts/CardSans.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:GameRoman;src:url('assets/fonts/CardRoman.woff2') format('woff2');font-weight:400 900;font-display:swap}
:root{color-scheme:dark;--ink:#111f21;--deep:#0c1517;--paper:#e9ddbc;--muted:#a9aea0;--copper:#c4a374;--red:#a4362b;--red-light:#d27057;--jade:#7da18f;--line:rgba(205,190,149,.2);--font:GameSans,'PingFang SC',sans-serif;--serif:GameSerif,'Songti SC',serif;--kai:GameKai,'Kaiti SC','STKaiti',serif;--nav-height:calc(64px + env(safe-area-inset-bottom,0px))}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{font-family:var(--font);background:#080e10;color:var(--paper);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,select,input{font:inherit;color:inherit}button{border:0;cursor:pointer;background:none;touch-action:manipulation;user-select:none}button:disabled{opacity:.38;cursor:default}button:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid #e8c683;outline-offset:4px}button:active:not(:disabled){transform:translateY(1px);filter:brightness(1.12)}button,summary{min-height:44px}button svg{width:22px;height:22px;stroke:currentColor;stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:400}strong,b{font-weight:600}img{display:block;max-width:100%;object-fit:cover}small{font-size:12px}p{overflow-wrap:anywhere}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.game-shell{width:min(100%,500px);height:100dvh;max-height:100dvh;position:relative;isolation:isolate;margin:auto;overflow:hidden;background:var(--ink);display:flex;flex-direction:column;box-shadow:0 0 100px #0008}.game-shell:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:25;box-shadow:inset 0 0 50px #02080824}.scene{position:absolute;inset:0;z-index:-2;background-color:#243634;background-size:cover;background-position:center;opacity:.78}.scene-village{background-image:url('./assets/scene-village.webp')}.scene-road{background-image:url('./assets/scene-road.webp')}.scene-tavern{background-image:url('./assets/scene-tavern.webp')}.scene-temple{background-image:url('./assets/scene-temple.webp')}.scene:after{content:'';position:absolute;inset:0;background:linear-gradient(#08121355,#08121300 30%,#0c171bbc 75%,#0c171b 100%)}
.topbar{height:calc(58px + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) 17px 0 10px;flex:none;display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:9px;align-items:center;position:relative;z-index:5;background:linear-gradient(#0e1a1cbd,#0e1a1c00)}.topbar h1{font:25px var(--kai);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-spacer{width:44px}.icon-button{display:grid;place-items:center;width:44px;height:44px;color:var(--paper)}.purse{display:flex;align-items:center;gap:8px;min-width:56px;justify-content:flex-end;font-size:14px;color:var(--copper);font-variant-numeric:tabular-nums}.coin-mark{display:inline-block;width:15px;height:15px;flex:none;border:2px solid #c0a16b;border-radius:50%;position:relative;vertical-align:-2px}.coin-mark:after{content:'';width:4px;height:4px;background:#c0a16b;position:absolute;top:3.5px;left:3.5px}.primary,.secondary{min-height:48px;padding:10px 17px;position:relative;text-align:center;line-height:1.4;border-radius:3px;font-size:16px}.primary{background:var(--red);border:1px solid #d17d544f;color:#fff0ce;box-shadow:inset 0 1px #f3c48a27,0 4px 10px #070b0b2e}.secondary{border:1px solid #c4aa7b4a;background:#182527d9;color:#d9c8a5}.wide{width:100%}.compact{font-size:13px;padding:8px 12px;min-height:44px}.text-button{font-size:14px;color:#c1b597;padding:8px 12px;min-height:44px}.bottom-nav{height:var(--nav-height);padding:3px 12px env(safe-area-inset-bottom,0px);display:grid;grid-template-columns:repeat(4,1fr);flex:none;background:#0d191cf5;border-top:1px solid #b9a0762a;position:relative;z-index:8}.bottom-nav button{display:flex;gap:2px;align-items:center;justify-content:center;flex-direction:column;color:#9da69b;min-height:56px;font-size:12px;position:relative}.bottom-nav button svg{width:24px;height:24px;stroke-width:1.3}.bottom-nav .active{color:#f0c890}.bottom-nav .active:before{content:'';width:22px;height:2px;position:absolute;top:-4px;left:calc(50% - 11px);background:var(--copper)}.scroll-content{overflow:auto;overscroll-behavior:contain;min-height:0;flex:1;padding:14px 22px calc(28px + env(safe-area-inset-bottom,0px));scrollbar-width:thin;scrollbar-color:#796b4d55 transparent}.page-intro{padding:12px 0 22px}.page-intro h2{font:27px/1.4 var(--kai);margin-bottom:8px}.page-intro p{color:var(--muted);font-size:13px;line-height:1.7}
.title-screen{height:100%;display:flex;align-items:center;flex-direction:column;position:relative;padding:calc(46px + env(safe-area-inset-top,0px)) 32px calc(12px + env(safe-area-inset-bottom,0px))}.screen-title .scene{opacity:1;background-position:48% center}.screen-title .scene:after{background:linear-gradient(#0914155c,#0a14131a 25%,#0c17194d 54%,#0c171af7 92%)}.title-seal{width:35px;writing-mode:vertical-rl;background:#962c23;padding:9px 6px;color:#f0d2a4;font:20px var(--kai);box-shadow:0 2px 5px #0003;margin-right:130px}.game-wordmark{display:flex;align-items:center;gap:15px;margin-top:16px;text-shadow:0 3px 18px #001b23cc}.game-wordmark h1{writing-mode:vertical-rl;font:106px/.97 var(--kai);color:#f2e7c7;letter-spacing:9px}.game-wordmark p{writing-mode:vertical-rl;font:30px/1.5 var(--kai);letter-spacing:9px;margin-top:40px}.title-verse{font:16px/2 var(--serif);text-align:center;margin-top:28px;color:#f0e4c4;text-shadow:0 2px 10px #052626}.title-start{width:100%;max-width:270px;margin-top:auto;padding-top:25px}.title-start button{font:24px var(--kai);height:57px;letter-spacing:3px}.title-start p{text-align:center;color:#bbbaa6;font-size:12px;margin-top:13px}.title-links{display:flex;justify-content:center;gap:22px;padding-top:10px}.camp-screen{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px 25px 10px;position:relative}.camp-location{display:flex;align-items:center;gap:13px;color:#ede3c6}.camp-location>span{font:21px var(--kai);border-left:2px solid var(--red-light);padding-left:10px}.camp-location small{font-size:11px;color:#c4c5b2;text-shadow:0 1px 2px #000}.camp-chapter{margin-top:auto;padding:45px 6px 24px;text-shadow:0 2px 8px #0009}.camp-chapter>p{font:16px var(--kai);color:#d3b480;margin-bottom:13px}.camp-chapter h2{font:43px/1.25 var(--kai);max-width:380px;color:#f0e2bb}.camp-verse{font:15px/1.85 var(--serif);color:#d5d5c5;margin-top:15px;max-width:28em}.camp-actions{width:100%}.journey-button{width:100%;display:flex;justify-content:space-between;align-items:center;padding:14px 20px;min-height:59px}.journey-button>span{font:26px var(--kai)}.journey-button>small{font-size:12px;max-width:55%;text-align:right;color:#f0c8a7}.camp-secondary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:11px}.camp-save{text-align:center;font-size:10px;letter-spacing:1px;color:#a7ad9c;margin:9px 0 0}.chapter-screen .page-intro{padding-bottom:24px}.chapter-list{list-style:none;padding:0 0 10px;margin:0}.chapter-entry{position:relative;margin:0 0 8px}.chapter-entry:before{content:'';position:absolute;left:25px;top:51px;bottom:-14px;width:1px;background:#a68d5b50}.chapter-entry:last-child:before{display:none}.chapter-entry>button{width:100%;display:flex;align-items:center;gap:17px;text-align:left;min-height:79px;padding:10px 0}.chapter-number{font:27px var(--kai);width:50px;height:50px;display:grid;place-items:center;border:1px solid #a18b6457;transform:rotate(2deg);background:#17282b}.chapter-copy{flex:1}.chapter-copy strong{display:block;font:23px var(--kai);margin-bottom:5px}.chapter-copy small{color:var(--muted);font-size:12px}.chapter-symbol{color:var(--copper);font-size:16px;min-width:27px;text-align:center}.chapter-entry.done .chapter-symbol{font:21px var(--kai);color:#d38564;border:1px solid #c2633c85;transform:rotate(-8deg);width:28px;height:28px}.chapter-entry.locked>button{opacity:.45}.chapter-entry.locked .chapter-symbol{font-size:11px}
.story-screen{flex:1;min-height:0;position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:17px 22px calc(22px + env(safe-area-inset-bottom,0px))}.story-heading{position:relative;z-index:2;text-shadow:0 1px 10px #000;padding-left:8px}.story-heading p{font:13px/1.7 var(--serif);color:#e0d2ad}.story-heading h2{font:33px/1.4 var(--kai);margin-top:8px}.story-scene{opacity:.88}.story-scene:after{background:linear-gradient(#08151365,#0a131500 35%,#0c171aca)}.story-portrait{position:absolute;right:-20px;bottom:180px;height:54%;width:65%;opacity:.86;mask-image:linear-gradient(to bottom,#000 62%,transparent 100%);pointer-events:none}.story-portrait img{width:100%;height:100%;object-position:45% 24%;mix-blend-mode:screen;filter:saturate(.75);mask-image:linear-gradient(to right,transparent,#000 28%)}.dialogue-box{position:relative;z-index:3;padding:20px 21px 9px;background:#0d1d1fef;border-top:1px solid #b29c6d91;box-shadow:0 -15px 45px #0d171a35}.dialogue-person{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px}.dialogue-person h3{font:25px var(--kai);color:#e2bb7c}.dialogue-person>span{color:#9fa595;font-size:11px;font-variant-numeric:tabular-nums}.dialogue-text{font:18px/1.9 var(--serif);min-height:120px;color:#e7dec4}.dialogue-actions{display:flex;justify-content:space-between;align-items:center;margin-top:13px}.dialogue-actions .text-button{padding-left:0;font-size:12px}.dialogue-next{color:#edc68a;font:18px var(--kai);padding:10px 0 10px 15px;min-width:70px}.dialogue-next:after{content:'›';font:24px var(--serif);margin-left:11px}
.battle-screen{height:100%;display:flex;flex-direction:column;overflow:hidden;padding-top:env(safe-area-inset-top,0px)}.battle-top{height:52px;display:flex;justify-content:space-between;align-items:center;flex:none;padding:2px 13px 2px 20px}.battle-top>div{display:flex;align-items:baseline;gap:12px}.battle-top span{font:14px var(--kai);color:var(--copper)}.battle-top strong{font:21px var(--kai)}.battle-scene{opacity:.34;background-position:center 28%}.battle-scene:after{background:linear-gradient(#0c1b1c1a,#14272720 40%,#101c20f0 72%,#101c20)}.enemy-zone,.player-zone{position:relative;padding:3px 22px 5px;display:flex;align-items:end;gap:18px;flex:none}.health{flex:1;min-width:0}.health-label{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12px;margin-bottom:5px}.health-label strong{color:#ecddba;font-weight:500}.health-label>span{font:14px var(--font);font-variant-numeric:tabular-nums;color:#e2e4cc}.health-label small{color:#a7afa0;font-size:10px}.health-track{height:5px;background:#090f1399;border-radius:1px;overflow:hidden}.health-track>span{display:block;height:100%;background:#b34a3d;transition:width .38s ease}.health.player .health-track>span{background:#739c87}.enemy-count,.player-count{font-size:10px;line-height:1.1;color:#b2b8a7;text-align:center;min-width:29px;flex:none}.enemy-count>b,.player-count>b{display:block;font:23px var(--serif);color:#e7d8b5;margin-top:4px}.battle-field{flex:1;min-height:155px;position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:22px 18px 19px;overflow:hidden}.field-objective{position:absolute;top:13px;left:20px;right:20px;text-align:center;font-size:11px;color:#bec1ac}.played-cards{display:flex;justify-content:center;align-items:center;position:relative;height:115px;max-width:94%;min-width:150px}.played-cards .poker-card{width:73px;min-width:73px;height:104px;box-shadow:0 8px 12px #0005;transform:rotate(-2deg);margin-left:-24px}.played-cards .poker-card:first-child{margin-left:0}.played-cards .poker-card:nth-child(2n){transform:rotate(3deg) translateY(-2px)}.played-cards .card-caption small{display:none}.played-cards .card-caption strong{font-size:15px}.played-cards .card-index{top:3px;left:3px;min-width:19px}.played-cards .card-index>b{font-size:16px}.played-cards .card-index>i{font-size:16px}.played-cards .card-copies{font-size:10px;top:4px;right:4px}.played-cards .joker-rank{font-size:12px!important}.hand-announcement{min-height:29px;text-align:center;margin-top:8px;position:relative;z-index:1}.hand-announcement span{font-size:10px;color:#c8b998;margin-right:9px}.hand-announcement strong{font:24px var(--kai);color:#eed399;text-shadow:0 2px 5px #0009}.table-seal{font:91px var(--kai);color:#bdbe922d;border:2px solid #bdbe9228;width:110px;height:110px;display:grid;place-items:center;transform:rotate(-9deg)}.battle-log{font-size:10px;color:#abb2a0;position:absolute;left:20px;right:20px;bottom:33px;text-align:center;pointer-events:none;max-height:32px;overflow:hidden}.battle-log p:empty{display:none}.turn-ribbon{position:absolute;bottom:4px;left:22px;right:22px;border-top:1px solid #8a90614d;text-align:center;color:#dcca9d;font-size:12px;padding-top:4px}.turn-ribbon.enemy-turn{color:#bbaa8f}.player-zone{padding-top:5px;padding-bottom:4px}.hand-area{height:270px;flex:none;position:relative;min-height:0;padding-top:4px;background:linear-gradient(#111f2022,#0d191bec);border-top:1px solid #b8a07416}.selection-label{height:29px;display:flex;justify-content:space-between;gap:9px;padding:1px 18px;font-size:11px;color:#b0b7a6;align-items:center}.selection-label b{color:#e1bd80;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hand-scroll{height:calc(100% - 29px);overflow-x:auto;overflow-y:hidden;padding:11px 17px 5px;scrollbar-width:thin;scrollbar-color:#9e8d603d transparent;overscroll-behavior-x:contain}.hand-grid{display:grid;grid-template-rows:repeat(2,104px);grid-auto-columns:71px;grid-auto-flow:column;gap:8px 5px;width:max-content;padding-right:7px}.battle-actions{display:grid;grid-template-columns:1fr 1fr 1.35fr;gap:9px;padding:8px 17px calc(12px + env(safe-area-inset-bottom,0px));flex:none;background:#0c1719}.battle-actions button{height:48px;font-size:17px}.poker-card{position:relative;display:block;aspect-ratio:2/3;width:100%;min-height:0;border:2px solid #d8d4bf;background:#e9e6d8;padding:0;border-radius:4px;overflow:hidden;box-shadow:0 2px 5px #0005;text-align:left;color:#121d1c;isolation:isolate}.poker-card img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:46% 36%;z-index:-1}.poker-card:before{content:'';position:absolute;inset:0;z-index:0;background:linear-gradient(transparent 35%,#07141511 58%,#081717ed 100%);pointer-events:none}.poker-card.tier-1:after{display:none}.poker-card.tier-2{border-color:#c7d8d7;box-shadow:0 0 0 1px #dceeee2b,0 4px 8px #0004}.poker-card.tier-3{border-color:#d7b973;box-shadow:0 0 0 1px #bc923d55,0 4px 8px #0004}.poker-card.tier-4{border-color:#bed5bb;box-shadow:0 0 0 1px #a9bddd55,0 4px 8px #0004}.poker-card.tier-2:after,.poker-card.tier-3:after,.poker-card.tier-4:after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.12;background:linear-gradient(125deg,transparent 20%,#e1f3ff 38%,transparent 50%,#d8e7eb 90%);mix-blend-mode:screen}.poker-card.tier-3:after{background:linear-gradient(135deg,transparent 20%,#ffedab 40%,transparent 60%);opacity:.2}.poker-card.tier-4:after{opacity:.27;background:linear-gradient(125deg,#db6a8266 5%,#d9bf5088 21%,#8edac577 36%,transparent 48%,#8d9be977 65%,#e98d9577 85%)}.card-index{position:absolute;top:5px;left:5px;display:flex;align-items:center;flex-direction:column;justify-content:center;min-width:21px;padding:2px 1px;background:#efe8d4f0;border-radius:2px;line-height:.92;z-index:2;box-shadow:0 1px 2px #0003;color:#18262c}.card-index b{font:600 24px/.9 GameRoman,Georgia,serif}.card-index i{font:normal 22px/1.05 Georgia,serif}.red-suit .card-index{color:#a72828}.card-index .joker-rank{font:600 12px/1 var(--serif);writing-mode:vertical-rl;letter-spacing:2px;padding:2px 0}.card-copies{position:absolute;right:6px;top:7px;background:#142222d9;color:#f1e0b9;padding:1px 4px;border-radius:2px;font-size:11px;font-variant-numeric:tabular-nums;z-index:2}.card-caption{position:absolute;bottom:6px;left:5px;right:5px;color:#eee2c0;text-align:center;z-index:2;text-shadow:0 2px 3px #0008}.card-caption small{display:block;font:10px/1.3 var(--serif);margin-bottom:3px;color:#d2c8a5}.card-caption strong{display:block;font:23px/1.15 var(--kai);white-space:nowrap}.hand-card{width:71px;height:104px;border-width:1.5px;align-self:end;transition:transform .14s ease,box-shadow .14s ease;box-shadow:0 2px 4px #0007;overflow:hidden}.hand-card .card-index{top:3px;left:3px;min-width:18px;padding:2px 1px}.hand-card .card-index b{font-size:17px}.hand-card .card-index i{font-size:17px}.hand-card .card-index .joker-rank{font-size:11px}.hand-card .card-caption{bottom:5px;left:2px;right:2px}.hand-card .card-caption small{display:none}.hand-card .card-caption strong{font-size:16px}.hand-card .card-copies{font-size:10px;right:3px;top:4px;padding:0 3px}.hand-card.selected{transform:translateY(-8px);border-color:#efd99a;box-shadow:0 0 0 2px #dfc37b,0 5px 9px #0009;z-index:4}.selected-tick{position:absolute;bottom:25px;right:4px;background:#d1b15d;color:#122829;width:15px;height:15px;font:bold 10px/15px var(--font);text-align:center;border-radius:50%;z-index:3}.hand-card:disabled{opacity:.8}.card-back{background:#314548;border-color:#91856b;display:grid;place-items:center}.card-back:before{inset:6px;border:1px solid #bca57466;background:none}.card-back i{font:50px var(--kai);color:#cbbb8e99}
.collection-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:10px 0 19px}.collection-heading h2{font:31px var(--kai)}.collection-heading p{color:var(--muted);font-size:12px;margin-top:6px}.collection-filter{display:flex;gap:20px;border-bottom:1px solid var(--line);margin-bottom:12px}.collection-filter button{padding:7px 0;min-height:44px;font-size:13px;color:#a9b2a1;position:relative}.collection-filter .active{color:#efd19b}.collection-filter .active:after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--copper)}.collection-hint{font-size:11px;color:#a5ada0;line-height:1.7;margin-bottom:17px}.collection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 11px}.collection-card{aspect-ratio:2/3}.collection-card .card-caption strong{font-size:21px}.collection-card-info{display:flex;justify-content:space-between;align-items:center;gap:4px;font-size:10px;margin-top:6px;color:#a9b4a3}.collection-card-info b{font-weight:500;color:#cbae75}.archive-note{font-size:11px;line-height:1.8;color:#899b91;margin-top:27px}.collection-empty{padding:25px 0;color:var(--muted)}.hero-screen{padding-top:4px}.hero-inspect{height:300px;display:flex;justify-content:center;align-items:center;gap:17px}.hero-large{width:169px;height:253px;flex:none;transform:rotate(-3deg);box-shadow:4px 11px 23px #0006}.hero-large .card-caption strong{font-size:29px}.hero-large .card-caption small{font-size:12px}.hero-large .card-index b{font-size:28px}.hero-large .card-index .joker-rank{font-size:15px}.hero-name-side{display:flex;align-items:flex-start;gap:7px;align-self:flex-start;margin-top:30px;writing-mode:vertical-rl;white-space:nowrap}.hero-name-side>span{font:13px var(--serif);color:#adbbad;letter-spacing:2px}.hero-name-side>strong{font:31px var(--kai);letter-spacing:6px}.hero-tier-side{align-self:flex-end;display:flex;align-items:center;flex-direction:column;margin-bottom:36px;min-width:37px}.hero-tier-side span{writing-mode:vertical-rl;font:17px var(--kai);letter-spacing:3px}.hero-tier-side b{font:24px var(--serif);color:#d4b576;margin-top:11px}.hero-tier-side small{font-size:8px;color:#a0b09c;margin-top:3px}.hero-level{display:flex;align-items:center;gap:18px}.hero-level>strong{font:24px var(--kai);white-space:nowrap}.hero-level>div{flex:1;font-size:11px;color:#9caf9e}.hero-level i{display:block;height:3px;background:#080f12;margin-top:5px;position:relative}.hero-level i:after{content:'';display:block;height:100%;width:var(--xp);background:#ab925c}.hero-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin:25px 0}.stat{display:flex;flex-direction:column;position:relative}.stat>span{color:#aeb6a2;font-size:12px}.stat>b{font:30px/1.5 GameRoman,var(--serif);font-variant-numeric:tabular-nums}.stat>i{height:2px;background:#415148;position:relative;width:100%}.stat>i:after{content:'';height:100%;width:var(--stat);background:#bba66f;position:absolute;top:0;left:0}.hero-skill{padding:0 0 22px}.hero-skill h3{font:24px var(--kai);color:#d9bd81;margin-bottom:8px}.hero-skill p{font-size:13px;line-height:1.9;color:#bdc4b0}.equipment-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.equipment-button{display:grid;grid-template-columns:1fr auto;align-items:center;text-align:left;border:1px solid var(--line);padding:11px 13px;background:#24323555;min-height:68px}.equipment-button span{font:19px var(--kai)}.equipment-button strong{font-size:12px;color:#c0ad80;font-weight:400}.equipment-button small{font-size:10px;color:#91a197;margin-top:4px;grid-column:1/-1}.hero-bio{font:14px/1.9 var(--serif);color:#b8c0ad;margin-top:24px}.hero-source{margin-top:12px;color:#9fae9e;font-size:12px}.hero-source p{margin-top:10px;line-height:1.8}.hero-bottom-actions{display:grid;grid-template-columns:1.2fr 1fr;gap:11px;margin-top:23px}.tavern-screen{flex:1;min-height:0;padding:24px 27px 14px;display:flex;flex-direction:column}.screen-tavern .scene{opacity:1;background-position:49% center}.screen-tavern .scene:after{background:linear-gradient(#0c1b1e40,transparent 25%,#0c181b55 52%,#0c181b 88%)}.tavern-sign{color:#f6e2ba;text-shadow:0 3px 10px #000c}.tavern-sign>span{writing-mode:vertical-rl;font:16px var(--kai);border-right:1px solid #b9996e96;float:left;margin:8px 13px 0 0;padding-right:8px;letter-spacing:3px}.tavern-sign h2{font:39px/1.3 var(--kai)}.tavern-bottom{margin-top:auto}.tavern-bottom>p{font:16px/1.7 var(--serif);text-align:center;margin-bottom:19px}.recruit-button{width:100%;display:flex;align-items:center;justify-content:space-between;padding:14px 17px}.recruit-button>span{font:25px var(--kai)}.recruit-button small{font-size:11px;color:#ebc498}.recruit-button .coin-mark{height:12px;width:12px;border-color:#e8c299}.recruit-button .coin-mark:after{width:3px;height:3px;top:2.5px;left:2.5px;background:#e8c299}.recruit-rates{text-align:center;font-size:11px;color:#a5ada0}.recruit-rates summary{padding:12px;list-style-position:inside}.recruit-rates p{font-size:11px;line-height:1.8;margin-bottom:7px}.modal-backdrop{position:absolute;inset:0;z-index:30;background:#030c0eea;display:flex;align-items:center;padding:29px 20px;backdrop-filter:blur(6px)}.reveal-modal{width:100%;text-align:center}.reveal-subtitle{font:19px var(--kai);color:#bf9c68}.reveal-modal h2{font:30px var(--kai);margin:12px 0 30px}.reveal-cards{display:flex;justify-content:center;gap:11px;align-items:center;margin-bottom:35px}.reveal-cards>div{width:31%;min-width:0}.reveal-cards>div>span{display:block;font-size:11px;color:#c2ad80;margin-top:12px}.reveal-card{aspect-ratio:2/3}.reveal-card .card-caption strong{font-size:20px}.reveal-cards>div:nth-child(1){transform:rotate(-5deg) translateY(8px)}.reveal-cards>div:nth-child(3){transform:rotate(5deg) translateY(8px)}
.field-label{display:block;color:#aeb6a5;font-size:12px;margin-bottom:8px}.game-select{display:block;width:100%;height:47px;border:1px solid #c0a37353;background:#1a2b2d;border-radius:2px;padding:0 12px;outline:none;color:#e7d7b8}.fusion-stage{display:flex;align-items:center;justify-content:center;gap:20px;padding:27px 5px 16px}.fusion-card{width:122px;height:181px;flex:none}.fusion-card .card-caption strong{font-size:23px}.future-card{transform:rotate(3deg)}.fusion-arrow{font:37px var(--serif);color:#a99a70}.fusion-chance{text-align:center;margin:2px 0 23px}.fusion-chance>strong{font:39px GameRoman,var(--kai);display:block;color:#e0c28b}.fusion-chance>span{display:block;font-size:12px;color:#c8c6ad;margin-top:4px}.fusion-chance>p{font-size:11px;color:#a1b09b;margin-top:8px}.fusion-submit{margin-top:17px}.fusion-rules{margin-top:27px}.fusion-rules h3{font:22px var(--kai);margin-bottom:9px}.fusion-rules p{font-size:12px;color:#a9b8a5;line-height:1.9;margin-bottom:10px}.empty-state{text-align:center;padding:40px 10px}.empty-state h3{font:26px var(--kai);margin-bottom:12px}.empty-state p{font-size:13px;color:var(--muted);margin-bottom:23px}.shop-screen{padding-top:18px}.shop-heading{position:relative}.shop-stamp{font:14px var(--kai);color:#cdab77;border:1px solid #ac8a515f;padding:4px 8px;display:inline-block;transform:rotate(-3deg);margin-bottom:15px}.shop-heading h2{font:34px var(--kai);margin-bottom:12px}.shop-heading p{font-size:13px;line-height:1.8;color:#aeb8a5;max-width:30em}.jade-balance{margin:25px 0 17px;display:flex;align-items:baseline;gap:12px;color:#d1b178}.jade-balance>span{font:20px var(--kai)}.jade-balance strong{font:34px GameRoman,var(--serif)}.jade-balance small{margin-left:auto;font-size:10px;color:#98aa9c}.product{display:flex;align-items:center;gap:14px;padding:18px 0;border-top:1px solid #b6a37926}.product-mark{font:29px var(--kai);width:40px;height:43px;display:grid;place-items:center;color:#d2af72;border:1px solid #b7995c80;transform:rotate(-4deg);flex:none}.product-copy{flex:1}.product-copy h3{font:23px var(--kai);margin-bottom:5px}.product-copy p{font-size:11px;color:#99ac9d}.purchase-button{background:#2e3c34;border:1px solid #9a986249;min-width:81px;padding:7px 8px;color:#e2c491;border-radius:2px;min-height:48px;line-height:1.3;font-size:17px;flex:none}.purchase-button>small{display:block;font-size:9px;margin-top:3px;color:#b3b694}.shop-orders{margin-top:15px;color:#a8b6a4;font-size:12px}.shop-orders summary{padding:12px 0}.shop-orders ol{padding:0;list-style:none}.shop-orders li{display:flex;justify-content:space-between;gap:10px;font-size:11px;margin:7px 0}.shop-orders strong{font-weight:400;color:#92b5a0}.shop-footnote{font-size:10px;color:#8b9f91;line-height:1.8;margin-top:26px}.settings-section{padding:13px 0 25px}.settings-section h2{font:26px var(--kai);margin-bottom:16px}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:17px}.setting-row strong{font-size:15px;font-weight:400}.setting-row small{display:block;color:#91a797;font-size:11px;margin-top:3px}.switch{width:49px;height:44px;min-width:49px;position:relative;padding:0}.switch:before{content:'';position:absolute;inset:8px 0;background:#243a3b;border:1px solid #59695c;border-radius:20px}.switch>span{display:block;width:18px;height:18px;position:absolute;top:13px;left:6px;border-radius:50%;background:#91a092;transition:transform .16s}.switch.on:before{background:#7a7950;border-color:#aea46d}.switch.on>span{transform:translateX(19px);background:#e2cf99}.settings-section>p{font-size:13px;line-height:1.8;color:#a4b29e;margin-bottom:17px}.two-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.game-rules details{margin-bottom:5px}.game-rules summary{display:flex;align-items:center;font-size:14px;cursor:pointer;list-style:none}.game-rules summary:after{content:'+';margin-left:auto;color:#adab83;font-size:19px}.game-rules details[open] summary:after{content:'−'}.game-rules p{font:13px/1.9 var(--serif);color:#a8b7a3;margin:2px 0 14px}.settings-links{display:flex;justify-content:center;gap:20px;padding-bottom:10px}.result-screen{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:calc(35px + env(safe-area-inset-top,0px)) 40px calc(30px + env(safe-area-inset-bottom,0px));text-align:center}.result-seal{font:104px var(--kai);border:3px solid #b75036;color:#d77d53;width:140px;height:146px;display:grid;place-items:center;transform:rotate(-7deg);margin:15px 0 40px}.result-seal.defeat{color:#a5b5a6;border-color:#6e8d82}.result-screen h1{font:39px var(--kai);margin-bottom:16px}.result-screen>p{font:15px/1.85 var(--serif);color:#b6c0a9;max-width:25em}.reward-line{display:flex;gap:28px;justify-content:center;margin-top:27px;color:#b6b99e;font-size:12px}.reward-line strong{font:25px GameRoman,var(--serif);color:#d6ba7f;display:block;margin-top:3px}.result-screen .story-reward{color:#d6b77c;font-size:13px;margin-top:18px}.result-actions{width:100%;margin-top:37px;max-width:280px;display:flex;flex-direction:column;gap:12px}.game-notice{position:absolute;top:calc(63px + env(safe-area-inset-top,0px));left:22px;right:22px;padding:12px 17px;background:#ddd1b3;color:#1c2928;border-left:3px solid #ae4b37;box-shadow:0 4px 18px #0006;z-index:50;font-size:13px;text-align:center;pointer-events:none}.orientation-guard{display:none}
@media(min-width:700px){body{background:radial-gradient(ellipse at 50% 35%,#203032,#070d0f 70%)}.game-shell{border-left:1px solid #75847529;border-right:1px solid #75847529}}
@media(max-height:760px){.title-screen{padding-top:31px}.game-wordmark h1{font-size:89px}.game-wordmark p{font-size:26px}.title-verse{margin-top:19px;font-size:14px}.title-links{padding-top:4px}.camp-chapter{padding-bottom:19px}.camp-chapter h2{font-size:38px}.camp-verse{font-size:14px;margin-top:10px}.camp-save{margin-top:6px}.dialogue-text{font-size:16px;min-height:107px}.story-screen{padding-top:10px}.story-heading h2{font-size:29px}.hand-area{height:239px}.hand-grid{grid-template-rows:repeat(2,89px);grid-auto-columns:63px;gap:8px 5px}.hand-card{width:63px;height:89px}.hand-card .card-caption strong{font-size:15px}.hand-card .card-index b{font-size:16px}.hand-card .card-index i{font-size:15px}.battle-actions{padding-top:5px;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px))}.battle-actions button{height:44px;min-height:44px}.battle-field{min-height:135px;padding-bottom:15px}.played-cards{height:97px}.played-cards .poker-card{width:62px;min-width:62px;height:90px}.battle-log{display:none}.hand-announcement{margin-top:3px;min-height:22px}.hand-announcement strong{font-size:21px}.turn-ribbon{font-size:11px;bottom:1px}.field-objective{font-size:10px;top:8px}.tavern-screen{padding-top:15px}.tavern-sign h2{font-size:34px}.result-seal{width:120px;height:122px;font-size:88px;margin-bottom:28px}.result-screen h1{font-size:34px}.result-actions{margin-top:26px}.hero-inspect{height:275px}.hero-large{width:155px;height:232px}}
@media(max-height:640px){.topbar{height:calc(49px + env(safe-area-inset-top,0px))}.title-screen{padding-top:21px}.title-seal{font-size:16px;width:30px}.game-wordmark{margin-top:10px}.game-wordmark h1{font-size:72px}.game-wordmark p{font-size:23px}.title-verse{font-size:13px;margin-top:13px}.title-start{padding-top:12px}.title-start button{height:49px}.title-start p{margin-top:8px}.title-links .text-button{font-size:12px}.camp-chapter{padding-top:15px;padding-bottom:15px}.camp-chapter h2{font-size:33px}.camp-chapter>p{margin-bottom:8px}.camp-secondary{margin-top:8px}.camp-secondary button{min-height:44px}.camp-save{display:none}.journey-button{min-height:50px;padding:9px 15px}.bottom-nav{height:calc(56px + env(safe-area-inset-bottom,0px))}.bottom-nav button{min-height:49px}.story-heading{display:none}.story-screen{padding:5px 15px calc(15px + env(safe-area-inset-bottom,0px))}.dialogue-box{padding:15px 17px 6px}.dialogue-text{font-size:15px;min-height:85px;line-height:1.85}.dialogue-actions{margin-top:6px}.story-portrait{bottom:155px;height:66%}.battle-top{height:44px}.battle-top strong{font-size:19px}.enemy-zone,.player-zone{padding-top:1px;padding-bottom:2px}.health-label{margin-bottom:3px}.battle-field{min-height:117px}.field-objective{top:1px}.played-cards{height:81px}.played-cards .poker-card{width:53px;min-width:53px;height:76px;margin-left:-16px}.played-cards .card-caption strong{font-size:13px}.played-cards .card-index b{font-size:13px}.played-cards .card-index i{font-size:13px}.played-cards .card-copies{font-size:8px;right:2px}.hand-announcement strong{font-size:18px}.hand-announcement{margin-top:1px}.hand-area{height:207px}.selection-label{height:25px;font-size:10px}.hand-scroll{height:calc(100% - 25px);padding-top:8px}.hand-grid{grid-template-rows:repeat(2,78px);grid-auto-columns:59px;gap:7px 5px}.hand-card{height:78px;width:59px}.hand-card .card-index b{font-size:14px}.hand-card .card-index i{font-size:14px}.hand-card .card-index .joker-rank{font-size:10px}.hand-card .card-copies{font-size:9px}.hand-card .card-caption strong{font-size:14px}.hand-card .card-caption{bottom:4px}.battle-actions{gap:8px;padding-top:3px;padding-bottom:calc(6px + env(safe-area-inset-bottom,0px))}.enemy-count>b,.player-count>b{font-size:19px}.tavern-bottom>p{font-size:14px;margin-bottom:12px}.recruit-button{padding:10px 13px}.recruit-rates summary{padding:10px}.tavern-sign h2{font-size:30px}.result-seal{width:91px;height:95px;font-size:69px;margin-bottom:23px}.result-screen h1{font-size:30px}.result-screen>p{font-size:13px}.result-actions{margin-top:22px}.reward-line{margin-top:20px}}
@media(max-width:360px){.scroll-content{padding-left:17px;padding-right:17px}.topbar{padding-right:13px;gap:5px}.topbar h1{font-size:23px}.purse{font-size:12px}.camp-screen{padding-left:20px;padding-right:20px}.camp-chapter h2{font-size:34px}.collection-grid{gap:14px 8px}.collection-card .card-caption strong{font-size:18px}.collection-card .card-caption small{font-size:8px}.collection-card .card-index b{font-size:20px}.collection-card .card-index i{font-size:19px}.hero-inspect{gap:12px}.hero-name-side{gap:5px}.hero-name-side>strong{font-size:27px}.hero-tier-side{min-width:32px}.hero-large{width:144px;height:216px}.hero-stats{gap:10px}.stat>b{font-size:26px}.fusion-stage{gap:13px}.fusion-card{width:107px;height:161px}.reveal-modal h2{font-size:26px}.reveal-cards{gap:7px}.reveal-card .card-caption strong{font-size:17px}.product{gap:10px}.product-copy h3{font-size:21px}}
@media(orientation:landscape) and (max-height:520px) and (pointer:coarse){.orientation-guard{display:flex;position:fixed;inset:0;z-index:100;background:#102326;align-items:center;justify-content:center;flex-direction:column;padding:30px}.orientation-guard strong{font:34px var(--kai);color:#e8d4a2}.orientation-guard p{color:#a4b69f;font-size:14px;margin-top:18px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
.reduced-motion *,.reduced-motion *:before,.reduced-motion *:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
.card-index-bottom{top:auto;left:auto;right:4px;bottom:4px;transform:rotate(180deg);min-width:17px;padding:1px;opacity:.88}.card-index-bottom b{font-size:16px}.card-index-bottom i{font-size:16px}.card-index-bottom .joker-rank{font-size:9px}.hand-card .card-index-bottom,.played .card-index-bottom,.reveal-card .card-index-bottom,.fusion-card .card-index-bottom{display:none}.hero-large .card-index-bottom b{font-size:22px}.hero-large .card-index-bottom .joker-rank{font-size:12px}.hero-large .card-index-bottom i{font-size:22px}.collection-card .card-index-bottom{right:2px;bottom:3px;min-width:12px;opacity:.65}.collection-card .card-index-bottom b{font-size:11px}.collection-card .card-index-bottom i{font-size:11px}.collection-card .card-index-bottom .joker-rank{font-size:8px}.collection-card .card-caption{left:3px;right:13px}.collection-filter{justify-content:space-between;gap:10px}.collection-filter button{font-size:12px;flex:1;white-space:nowrap}.unowned .poker-card img{filter:saturate(.5) brightness(.68)}.unowned .card-caption{color:#c7c8b7}.unowned .card-copies{opacity:.7}.unowned-description{font-size:12px;text-align:center;color:#b4bea7;margin-top:3px}.quiet-result .result-seal{border-color:#718980;color:#b4bea8;transform:none;font-size:73px;width:112px;height:116px}.quiet-result h1{font-size:32px}.quiet-result .primary{background:#3c524c;border-color:#73806c6b}
.deck-hint{font-size:11px;color:#aab69f;line-height:1.8;margin-top:12px}
.scene-night{background-image:url('./assets/scene-night.webp')}.training-progress{margin-top:24px;text-align:center;color:#ccbb92}.training-progress>strong{font-size:14px;font-weight:400}.training-marks{display:flex;justify-content:center;gap:9px;margin:11px 0}.training-marks>i{display:block;width:29px;height:4px;background:#516354}.training-marks>i.complete{background:#c3a368}.training-progress>p{font-size:12px;line-height:1.8}.training-progress>small{display:block;font-size:10px;color:#8faaa0;margin-top:4px}.result-screen:has(.training-progress) .result-seal{width:98px;height:105px;font-size:75px;margin-bottom:20px}.result-screen:has(.training-progress) .result-actions{margin-top:22px}
.poker-card img.archive-art{width:132%;max-width:none;height:100%;left:-16%;right:auto;top:0;object-fit:cover;object-position:50% 30%}.chapter-entry>.chapter-training{width:calc(100% - 67px);margin:0 0 12px 67px;min-height:44px;border:1px solid #a68b543d;background:#172b2cd9;display:flex;justify-content:space-between;gap:10px;padding:8px 12px;border-radius:2px;font-size:12px;color:#cfb782}.chapter-training small{font-size:10px;color:#9dab9a}.skill-strength{display:block;color:#9baa96;font-size:11px;margin-top:8px}.turn-ribbon{display:flex;justify-content:space-between;align-items:center;gap:10px}.turn-ribbon>span{flex:none}.turn-ribbon:has(>span:only-child){justify-content:center}.battle-skill{font:12px var(--kai);color:#d8c09b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.result-screen{overflow-y:auto;overscroll-behavior:contain;justify-content:flex-start}.result-screen>*{flex-shrink:0}.result-seal{margin-top:auto}.result-actions{margin-bottom:auto}.retreat-section>button{border-color:#a25e4566;color:#d9b8a0}
.hero-action-footer{flex:none;padding:12px 22px calc(13px + env(safe-area-inset-bottom,0px));border-top:1px solid #a293672d;background:#112224;position:relative;z-index:8}.hero-action-footer .hero-bottom-actions{margin-top:0}.hero-action-footer .hero-bottom-actions:has(>button:only-child){display:block}.hero-action-footer .deck-hint{margin-top:8px;text-align:center;font-size:10px}.hero-screen{padding-bottom:24px}.screen-result .scene:after{background:linear-gradient(#091b1d4a,#1021236b 30%,#102123bd 66%,#0c171bf0 100%)}.result-screen h1{color:#f2e4bf;text-shadow:0 2px 10px #02101299}.result-screen>p{color:#d9deca;text-shadow:0 1px 6px #061816aa}.result-screen .reward-line{color:#d9dcc4}.result-screen .reward-line strong{color:#efcf92;text-shadow:0 2px 5px #0b1b18}.result-screen .story-reward{color:#e3c691;text-shadow:0 2px 5px #0b1b18}
@media(max-height:640px){.result-screen:has(.training-progress) .result-seal{width:65px;height:68px;font-size:49px;margin-bottom:17px}.result-screen:has(.training-progress) .training-progress{margin-top:17px}.result-screen:has(.training-progress) .reward-line{margin-top:16px}}
@media(max-height:600px){.hand-area{height:153px}.hand-grid{grid-template-rows:104px;grid-auto-columns:71px;gap:6px}.hand-card{width:71px;height:104px}.hand-card .card-caption strong{font-size:16px}.hand-card .card-caption{bottom:5px}.hand-card .card-index b{font-size:17px}.hand-card .card-index i{font-size:17px}.hand-card .card-index .joker-rank{font-size:11px}.hand-card .card-copies{right:3px;top:4px;font-size:10px}.battle-field{min-height:105px}.battle-top{height:41px}.selection-label{font-size:10px}.selection-label b{font-size:11px}.health-label strong{font-size:11px}.battle-actions button{font-size:15px}}

.scene-bridge{background-image:url('./assets/scene-bridge.webp')}
.collection-tools{display:flex;gap:7px;flex:none}.collection-tools .compact{font-size:12px;padding:8px 10px}.deck-edit-mode .collection-heading{padding-bottom:15px}.deck-edit-mode .collection-hint{margin-bottom:20px;font-size:12px;line-height:1.8}.deck-edit-mode .poker-card.selected{outline:2px solid #d8be78;outline-offset:2px}.deck-edit-mode .poker-card:not(.selected){opacity:.68}.deck-edit-mode .selected-tick{width:20px;height:20px;line-height:20px;font-size:13px;right:5px;bottom:34px}.deck-edit-footer{flex:none;background:#122326;padding:12px 20px calc(13px + env(safe-area-inset-bottom,0px));border-top:1px solid #a08a5547;position:relative;z-index:8}.deck-edit-total{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px;color:#d4c291;font-size:12px}.deck-edit-total b{font:22px GameRoman,var(--serif);color:#f1d392}.deck-edit-total small{font-size:11px;color:#9eb7a0}.deck-edit-total.invalid small,.deck-edit-total.invalid b{color:#e8a086}.deck-edit-footer button{min-height:47px}
.result-screen>.defeat-retained{font-size:12px;color:#bfd1b7;margin-top:12px}
.screen-story .topbar h1{font-size:20px}
.battle-field{padding-bottom:64px}.battle-log{display:block;font-size:12px;line-height:1.4;color:#c4ceb9;bottom:30px;max-height:34px}.battle-log p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-height:600px){.battle-field{padding-bottom:46px}.battle-log{display:block;bottom:25px;max-height:18px}.battle-log p:not(:last-child){display:none}}

/* Eight-card table: the whole hand stays visible, with two deliberate actions below it. */
.screen-battle .battle-top{height:44px;padding:0 13px 0 18px}
.screen-battle .battle-top strong{font-size:21px}
.screen-battle .enemy-zone{padding:2px 18px 5px;gap:14px;min-height:37px}
.screen-battle .enemy-count{display:flex;align-items:baseline;gap:5px;white-space:nowrap}
.screen-battle .enemy-count b{font-size:21px;margin:0}
.screen-battle .battle-field{min-height:166px;padding:8px 16px 51px;justify-content:center;overflow:hidden}
.screen-battle .played-cards{height:90px;min-height:50px;flex:0 1 90px}
.screen-battle .played-cards .poker-card{height:88px;width:61px;min-width:61px;margin-left:-22px}
.screen-battle .played-cards .poker-card:first-child{margin-left:0}
.screen-battle .played-cards .card-caption strong{font-size:14px}
.screen-battle .hand-announcement{min-height:25px;flex:none;margin-top:5px}
.screen-battle .hand-announcement strong{font-size:26px}
.screen-battle .table-seal{height:75px;width:75px;font-size:60px}
.battle-feedback{position:absolute;left:18px;right:18px;bottom:0;min-height:46px;display:flex;justify-content:center;align-items:center;flex-direction:column;border-top:1px solid #7e906047;padding:3px 0;color:#c4ceb9;gap:2px}
.screen-battle .battle-log{position:static;display:block;margin:0;font-size:12px;line-height:1.4;max-height:34px;white-space:normal;text-align:center;overflow:hidden}
.battle-feedback .battle-skill{font-size:11px;color:#d3bb89;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.battle-feedback.is-preview{flex-direction:row;justify-content:space-between;gap:10px;text-align:left}
.play-estimate{min-width:0;display:flex;flex-direction:column;gap:1px}
.play-estimate strong{font-size:13px;font-weight:500;color:#f0d8a3;white-space:nowrap}
.play-estimate small{font-size:11px;color:#abbcaf}
.leader-button{min-height:44px;min-width:90px;padding:0 10px;border:0;border-left:1px solid #8c99724d;background:transparent;text-align:right;color:#e9d6ae;display:flex;flex-direction:column;justify-content:center;align-items:flex-end;flex:none}
.leader-button small{font-size:10px;color:#aab6a0}
.leader-button span{font:18px/1.2 var(--kai)}
.screen-battle .player-zone{padding:3px 18px;min-height:44px;gap:14px;align-items:center}
.deck-stack{padding:0;min-height:44px;min-width:80px;background:transparent;border:0;display:flex;align-items:center;gap:6px;color:#c8c3a7;font-size:11px;line-height:1.2;text-align:left;flex:none}
.deck-stack b{font:19px GameRoman,var(--serif);color:#e7d8b5;margin-left:2px}
.deck-stack small{display:block;color:#92a391;font-size:10px;margin-top:2px}
.deck-back{display:grid;place-items:center;height:33px;width:23px;background:#2c4242;border:1px solid #a18f6480;border-radius:2px;box-shadow:2px -2px #263a39,3px -3px #90795370;color:#c2ad79;font:18px var(--kai);flex:none}
.screen-battle .hand-area{--hand-card-height:clamp(96px,31.5vw,126px);height:auto;min-height:0;flex:none;padding:0 14px 4px;background:linear-gradient(#111f2000,#0d191bf2);border-top:1px solid #b8a07420}
.hand-tools{height:46px;max-width:364px;margin:0 auto;display:flex;align-items:center;gap:6px}
.screen-battle .selection-label{height:auto;flex:1;min-width:0;padding:0 2px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;font-size:11px}
.screen-battle .selection-label span{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.screen-battle .selection-label b{font-size:12px;max-width:100%}
.hand-tool{height:44px;min-height:44px;min-width:46px;flex:none;padding:0 7px;border:0;background:transparent;font-size:12px;color:#cad1b7;white-space:nowrap}
.hand-tool:disabled{opacity:.36}
.hand-tool.redraw-button{min-width:76px;color:#d6ba80}
.redraw-button b{display:inline-grid;place-items:center;min-width:21px;height:22px;border:1px solid #ad99615e;margin-left:3px;color:#f2d294;font:16px GameRoman,var(--serif)}
.screen-battle .hand-grid{display:grid;width:100%;max-width:364px;margin:0 auto;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,var(--hand-card-height));grid-auto-flow:row;grid-auto-columns:auto;gap:8px 6px;padding:0;overflow:visible}
.screen-battle .hand-card{width:100%;height:var(--hand-card-height);min-width:0;align-self:stretch;border-radius:3px}
.screen-battle .hand-card.selected{transform:translateY(-4px);box-shadow:0 0 0 2px #dfc37b,0 5px 9px #0009}
.screen-battle .hand-card .card-index b,.screen-battle .hand-card .card-index i{font-size:19px}
.screen-battle .hand-card .card-index .joker-rank{font-size:12px}
.screen-battle .hand-card .card-caption{bottom:6px}
.screen-battle .hand-card .card-caption strong{font-size:19px}
.screen-battle .hand-card .card-copies{font-size:11px;top:4px;right:4px}
.empty-hand-slot{border:1px solid #87917724;border-radius:3px;background:#071a1b22;min-width:0;pointer-events:none}
.screen-battle .battle-actions{grid-template-columns:1fr 1.6fr;gap:12px;padding:8px 16px calc(10px + env(safe-area-inset-bottom,0px));min-height:0}
.screen-battle .battle-actions button{height:48px;min-height:44px;font-size:20px}

/* A recruit is read one card at a time. Hidden cards expose neither names nor rarity. */
.recruit-backdrop{padding:calc(18px + env(safe-area-inset-top,0px)) 24px calc(16px + env(safe-area-inset-bottom,0px));background:linear-gradient(#0a191cf2,#071416fa);align-items:stretch;overflow-y:auto}
.staged-reveal{display:flex;flex-direction:column;align-items:center;min-height:0;max-width:390px;margin:0 auto}
.reveal-heading{width:100%;position:relative;flex:none;text-align:center}
.reveal-heading>.reveal-subtitle{font:15px var(--serif);color:#bda071;margin:0 0 12px}
.reveal-heading>span{position:absolute;right:0;top:0;font:14px GameRoman,var(--serif);color:#b7bb9f;font-variant-numeric:tabular-nums}
.reveal-heading h2{font:38px/1.2 var(--kai);margin:0 0 6px;color:#f2deb9}
.reveal-heading>p:last-child{font:14px var(--serif);color:#c6baa0;margin:0}
.reveal-focus{flex:1;min-height:245px;width:100%;display:flex;align-items:center;justify-content:center;padding:18px 0}
.reveal-focus-card{width:190px;height:282px;flex:none;box-shadow:0 18px 44px #0008}
.reveal-focus-card .card-caption strong{font-size:30px}
.reveal-focus-card .card-caption small{font-size:14px}
.reveal-focus-card .card-index{top:8px;left:8px;min-width:27px}
.reveal-focus-card .card-index b{font-size:29px}
.reveal-focus-card .card-index i{font-size:27px}
.reveal-focus-card .card-index-bottom{display:none}
.reveal-focus-card .card-copies{font-size:14px;top:10px;right:10px}
.recruit-packet{position:relative;width:190px;height:282px;flex:none;border:1px solid #a58c556e;border-radius:3px;background:linear-gradient(110deg,#34493c,#1c342f 45%,#274136);color:#dec991;box-shadow:0 18px 44px #0008;display:flex;align-items:center;justify-content:center;isolation:isolate}
.packet-border{position:absolute;inset:10px;border:1px solid #b79d6359;pointer-events:none}
.packet-title{writing-mode:vertical-rl;font:42px/1.1 var(--kai);letter-spacing:6px;padding-bottom:16px}
.packet-seal{position:absolute;right:22px;bottom:23px;background:#843c2b;color:#e6be87;width:32px;height:35px;border:1px solid #b67e526b;font:23px/33px var(--kai);transform:rotate(-5deg)}
.reveal-collected{display:flex;justify-content:center;gap:15px;width:100%;margin:0 0 18px;min-height:80px;flex:none}
.reveal-thumb{width:48px;position:relative}
.reveal-thumb-card{width:48px;height:64px;border-width:1px;opacity:.7}
.reveal-thumb.current .reveal-thumb-card{opacity:1;border-color:#d5bb7e;box-shadow:0 0 0 1px #a9905799}
.reveal-thumb-card .card-index,.reveal-thumb-card .card-caption,.reveal-thumb-card .card-copies{display:none}
.reveal-thumb>span{display:block;margin-top:4px;font:13px var(--kai);white-space:nowrap;color:#c9c4a4}
.reveal-pending{width:48px;height:64px;border:1px solid #7e89674d;background:#253a3066;border-radius:2px;display:grid;place-items:center}
.reveal-pending>span{font:13px var(--kai);color:#7d917d;writing-mode:vertical-rl;letter-spacing:4px}
.reveal-controls{width:100%;flex:none}
.reveal-controls>.primary{height:48px;font-size:19px}
.reveal-skip{height:44px;min-height:44px;font-size:12px;color:#b4baa5}
.reveal-receipt{height:44px;display:grid;place-items:center;color:#8fa58e;font-size:12px;margin:0}
@media(max-height:680px){
 .screen-battle .battle-field{min-height:128px;padding-top:2px;padding-bottom:47px}
 .screen-battle .played-cards{height:61px;flex-basis:61px;min-height:40px}
 .screen-battle .played-cards .poker-card{height:59px;width:43px;min-width:43px;margin-left:-13px}
 .screen-battle .played-cards .card-index b,.screen-battle .played-cards .card-index i{font-size:12px}
 .screen-battle .played-cards .card-index{top:2px;left:2px;min-width:14px;padding:1px}
 .screen-battle .played-cards .card-caption{bottom:3px}
 .screen-battle .played-cards .card-caption strong{font-size:11px}
 .screen-battle .played-cards .card-copies{font-size:8px;right:2px;top:2px}
 .screen-battle .hand-announcement{min-height:21px;margin-top:2px}
 .screen-battle .hand-announcement strong{font-size:22px}
 .screen-battle .table-seal{height:50px;width:50px;font-size:39px}
 .screen-battle .battle-actions{padding-top:6px;padding-bottom:calc(6px + env(safe-area-inset-bottom,0px))}
 .screen-battle .battle-actions button{height:44px;font-size:18px}
 .recruit-backdrop{padding:14px 22px calc(8px + env(safe-area-inset-bottom,0px))}
 .reveal-heading>.reveal-subtitle{margin-bottom:5px;font-size:13px}
 .reveal-heading h2{font-size:31px;margin-bottom:3px}
 .reveal-heading>p:last-child{font-size:12px}
 .reveal-focus{min-height:214px;padding:11px 0}
 .reveal-focus-card,.recruit-packet{width:148px;height:220px}
 .reveal-focus-card .card-caption strong{font-size:26px}
 .reveal-focus-card .card-caption small{font-size:12px}
 .packet-title{font-size:35px}
 .reveal-collected{min-height:62px;margin-bottom:10px;gap:13px}
 .reveal-thumb,.reveal-pending{width:37px}
 .reveal-thumb-card,.reveal-pending{width:37px;height:48px}
 .reveal-thumb>span{font-size:11px;margin-top:3px}
 .reveal-controls>.primary{height:44px;font-size:18px}
}
@media(max-height:600px){
 .screen-battle .battle-top{height:44px}
 .screen-battle .battle-top strong{font-size:19px}
 .screen-battle .enemy-zone{min-height:31px;padding-top:0;padding-bottom:3px}
 .screen-battle .health-label{font-size:11px;margin-bottom:3px}
 .screen-battle .battle-field{min-height:116px;padding-bottom:45px}
 .screen-battle .played-cards{height:49px;flex-basis:49px;min-height:34px}
 .screen-battle .played-cards .poker-card{height:49px;width:37px;min-width:37px;margin-left:-9px}
 .screen-battle .played-cards .card-caption{display:none}
 .screen-battle .played-cards .card-copies{display:none}
 .screen-battle .battle-feedback{min-height:44px;left:16px;right:16px;padding:1px 0}
 .screen-battle .battle-log{font-size:11.5px;max-height:31px}
 .screen-battle .battle-feedback .battle-skill{font-size:10px}
 .screen-battle .player-zone{padding-top:0;padding-bottom:0;min-height:44px}
 .screen-battle .hand-area{--hand-card-height:96px;padding-bottom:2px}
 .screen-battle .hand-tools{height:44px}
 .screen-battle .hand-grid{gap:6px}
 .screen-battle .hand-card .card-caption strong{font-size:16px}
 .screen-battle .hand-card .card-index b,.screen-battle .hand-card .card-index i{font-size:17px}
 .screen-battle .hand-card .card-index .joker-rank{font-size:11px}
 .screen-battle .hand-card .card-copies{font-size:10px;right:3px}
 .play-estimate strong{font-size:12px}
 .play-estimate small{font-size:10px}
 .leader-button{min-width:79px;padding-right:2px}
}
.information-dialog .information-list{max-height:45dvh;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#9e8d6055 transparent;display:flex;flex-direction:column;gap:8px;padding:3px 2px 8px;margin:12px 0}
.information-dialog .leader-option.secondary{width:100%;min-height:58px;padding:10px 13px;text-align:left;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;white-space:normal}
.leader-option strong{font:20px var(--kai);color:#ebd5a8}
.leader-option small{font:12px/1.6 var(--font);color:#bfc5af}
.pile-card-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 4px;min-height:44px;border-bottom:1px solid #8d946433;font-size:13px;color:#c7c9b0}
.pile-card-row strong{font:20px var(--kai);color:#ebd9b5;flex:none}
.pile-card-row small{font-size:11px;color:#a7b49e}

/* The archive cards use a narrow vertical name slip. Keep the figure unobscured. */
.poker-card{--nickname-size:12px;--name-size:10px;border-radius:2px}
.poker-card.tier-1{border-color:#e4deca;box-shadow:0 2px 4px #0005}
.poker-card:before{background:linear-gradient(180deg,transparent 78%,#1c21120c)}
.poker-card .card-caption,
.screen-battle .hand-card .card-caption,
.screen-battle .played-cards .card-caption{position:absolute;display:inline-flex;flex-direction:row;align-items:center;gap:3px;writing-mode:vertical-rl;text-orientation:upright;top:4px;right:3px;bottom:auto;left:auto;max-height:calc(100% - 8px);padding:3px 2px;width:auto;background:#e8ddc1ed;border-left:1px solid #9c8c6266;color:#2e3329;text-align:start;text-shadow:none;white-space:nowrap;border-radius:0;z-index:2}
.poker-card .card-caption small,
.screen-battle .hand-card .card-caption small,
.screen-battle .played-cards .card-caption small{display:block;font:400 var(--nickname-size)/1.12 var(--kai);margin:0;color:#293027;letter-spacing:.1px}
.poker-card .card-caption strong,
.screen-battle .hand-card .card-caption strong,
.screen-battle .played-cards .card-caption strong{display:block;font:400 var(--name-size)/1.12 var(--kai);margin:0;color:#65583d;letter-spacing:0}
.poker-card .card-copies,
.screen-battle .hand-card .card-copies,
.screen-battle .played-cards .card-copies{top:auto;right:auto;left:3px;bottom:3px;padding:0 3px;background:#e8dec5ee;color:#443d2a;font:10px/1.35 GameRoman,var(--serif);border-radius:0}
.screen-battle .hand-card{--nickname-size:12px;--name-size:10px}
.screen-battle .hand-card .card-index b,.screen-battle .hand-card .card-index i{font-size:20px}
.screen-battle .hand-card .card-index .joker-rank{font-size:12px}
.screen-battle .hand-card .selected-tick{left:50%;right:auto;bottom:4px;transform:translateX(-50%);width:12px;height:12px;line-height:12px;font-size:9px;box-shadow:0 1px 3px #0005}
.hero-large,.reveal-focus-card{--nickname-size:14px;--name-size:11px}
.hero-large .card-caption,.reveal-focus-card .card-caption{top:7px;right:6px;gap:4px;padding:5px 3px}
.screen-battle .played-cards.has-cards{display:grid;grid-template-columns:repeat(var(--played-count),minmax(0,61px));gap:4px;justify-content:center;align-items:center;width:100%;max-width:100%;min-width:0}
.screen-battle .played-cards.has-cards .poker-card{--nickname-size:10px;--name-size:8.5px;width:100%;min-width:0;margin:0;max-height:100%}
.screen-battle .played-cards .card-caption{top:3px;right:2px;gap:2px;padding:2px 1px;max-height:calc(100% - 6px)}
.screen-battle .played-cards.many-cards .card-caption{flex-direction:column;gap:1px}
.screen-battle .played-cards.many-cards .poker-card{--nickname-size:8px;--name-size:7px}
.screen-battle .played-cards .card-copies{font-size:8px;left:2px;bottom:2px;padding:0 2px}
.reveal-thumb-card .card-caption{display:none}
.reveal-thumb>span{font:10px var(--kai);writing-mode:vertical-rl;letter-spacing:1px;margin:4px auto 0;max-height:34px}
.reveal-collected{min-height:101px}

/* Short scene titles read like the vertical slips printed beside the artwork. */
.game-wordmark h1{font-size:64px;letter-spacing:6px}
.game-wordmark p{font-size:19px;letter-spacing:5px}
.title-verse{writing-mode:vertical-rl;font-size:12px;line-height:1.9;letter-spacing:1px;margin-top:24px;max-height:115px;text-align:start}
.camp-location{align-items:flex-start;gap:9px}
.camp-location>span{writing-mode:vertical-rl;font:14px/1.4 var(--kai);letter-spacing:2px;border-left:0;border-right:1px solid #b79a655d;padding:5px 7px 5px 0}
.camp-location small{writing-mode:vertical-rl;font-size:10px;line-height:1.5;letter-spacing:1px;padding-top:5px;max-height:105px}
.camp-chapter{display:flex;flex-direction:row-reverse;justify-content:flex-start;align-items:flex-start;gap:13px;padding:20px 5px 23px}
.camp-chapter>p{writing-mode:vertical-rl;font:12px/1.5 var(--kai);letter-spacing:2px;margin:3px 0 0;color:#c9b383}
.camp-chapter h2{writing-mode:vertical-rl;font:24px/1.35 var(--kai);letter-spacing:3px;max-height:155px;margin:0}
.camp-chapter .camp-verse{writing-mode:vertical-rl;font:12px/1.85 var(--serif);letter-spacing:1px;max-height:139px;margin:3px 0 0;text-align:start;color:#d2cbb2}
.story-heading{display:flex;flex-direction:row-reverse;gap:10px;margin-left:auto;padding:0 5px 0 0}
.story-heading h2{writing-mode:vertical-rl;font:19px/1.5 var(--kai);letter-spacing:2px;margin:0;max-height:140px}
.story-heading p{writing-mode:vertical-rl;font:12px/1.75 var(--serif);letter-spacing:1px;max-height:140px;margin:2px 0 0}
.hero-name-side{gap:6px;margin-top:24px}
.hero-name-side>span{font:14px/1.5 var(--kai);color:#d3c7a4;letter-spacing:2px}
.hero-name-side>strong{font:400 11px/1.6 var(--kai);letter-spacing:2px;color:#aab7a5}
.hero-tier-side span{font-size:12px;letter-spacing:2px}
.tavern-sign{display:flex;align-items:flex-start;gap:12px}
.tavern-sign>span{float:none;margin:5px 0 0;font-size:12px;letter-spacing:2px;padding-right:8px}
.tavern-sign h2{writing-mode:vertical-rl;font:22px/1.7 var(--kai);letter-spacing:2px;margin:0}
.reveal-heading{display:grid;grid-template-columns:1fr auto auto;column-gap:9px;align-items:start;text-align:left;min-height:91px}
.reveal-heading>.reveal-subtitle{grid-column:1;grid-row:1;margin:2px 0 0;font-size:12px}
.reveal-heading>span{position:static;grid-column:1;grid-row:2;align-self:start;justify-self:start;font-size:14px}
.reveal-heading h2{grid-column:3;grid-row:1 / 3;writing-mode:vertical-rl;font:19px/1.5 var(--kai);letter-spacing:2px;margin:0;max-height:90px}
.reveal-heading>p:last-child{grid-column:2;grid-row:1 / 3;writing-mode:vertical-rl;font:12px/1.55 var(--kai);letter-spacing:1px;max-height:88px;margin:2px 0 0}
@media(max-height:680px){
 .screen-battle .played-cards.has-cards{grid-template-columns:repeat(var(--played-count),minmax(0,43px));gap:3px}
 .screen-battle .played-cards.has-cards .poker-card{--nickname-size:8px;--name-size:7px}
 .screen-battle .played-cards .card-caption{flex-direction:column;gap:1px;top:2px;right:1px;max-height:calc(100% - 4px);padding:2px 1px}
 .game-wordmark h1{font-size:52px}
 .game-wordmark p{font-size:17px}
 .title-verse{font-size:11px;margin-top:15px;max-height:98px}
 .camp-chapter{padding:15px 4px 18px;gap:11px}
 .camp-chapter h2{font-size:21px;max-height:129px}
 .camp-chapter .camp-verse{font-size:11px;max-height:122px}
 .story-heading{display:none}
 .tavern-sign h2{font-size:19px}
 .reveal-heading{min-height:79px}
 .reveal-heading h2{font-size:17px;max-height:78px}
 .reveal-heading>p:last-child{font-size:11px;max-height:77px}
 .reveal-collected{min-height:81px}
 .hero-large,.reveal-focus-card{--nickname-size:13px;--name-size:10px}
}
@media(max-height:600px){
 .screen-battle .played-cards.has-cards{grid-template-columns:repeat(var(--played-count),minmax(0,37px));gap:3px}
 .screen-battle .played-cards .card-caption{display:inline-flex}
 .screen-battle .played-cards .card-copies{display:block;font-size:7px}
 .screen-battle .hand-card .card-index b,.screen-battle .hand-card .card-index i{font-size:19px}
 .screen-battle .hand-card .card-index .joker-rank{font-size:11px}
}
.camp-community{display:flex;align-items:center;justify-content:center;gap:26px;margin-top:4px}
.camp-community .text-button{min-height:44px;font:13px var(--kai);color:#d7c394;padding:8px 10px}
.screen-battle .hand-announcement .strike-score{display:inline-flex;align-items:baseline;gap:3px;margin:0 0 0 11px;color:#d2b471;vertical-align:baseline}
.strike-score>b{font:500 28px/.9 GameRoman,var(--serif);font-variant-numeric:tabular-nums}
.strike-score>small{font-size:9px;color:#c6b48f}
.screen-battle .hand-announcement .strike-score.critical{color:#edb592}
@media(max-height:680px){.screen-camp .camp-screen{overflow-y:auto;overscroll-behavior:contain}.camp-community{margin-top:0;gap:22px}.camp-chapter{padding-top:8px;padding-bottom:10px}.strike-score>b{font-size:23px}.screen-battle .hand-announcement .strike-score{margin-left:7px}}
.camp-secondary{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.camp-secondary .secondary{font-size:14px;padding:8px 3px;white-space:nowrap}
.adventures-screen{padding-top:13px;background:linear-gradient(#10201da6,#10201de6)}
.adventure-intro{display:flex;flex-direction:row-reverse;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}
.adventure-intro h2{font:19px/1.5 var(--kai);writing-mode:vertical-rl;letter-spacing:2px;color:#e3c898;margin:0}
.adventure-intro p{font:13px/1.65 var(--serif);color:#d3d2b9;max-width:260px;padding-top:4px}
.adventure-list{display:flex;flex-direction:column;gap:18px;padding-bottom:18px}
.adventure-entry{display:grid;grid-template-columns:79px minmax(0,1fr);gap:15px;padding:0 0 19px;border-bottom:1px solid #8c92633b}
.adventure-portrait{position:relative;align-self:start;padding:9px 0 0;width:79px;min-height:118px}
.adventure-portrait img{width:65px;height:101px;object-fit:contain;opacity:.82;filter:sepia(.12)}
.adventure-portrait h3{position:absolute;right:-4px;top:0;writing-mode:vertical-rl;font:15px/1.5 var(--kai);letter-spacing:1px;color:#ead8b0;background:#172a27dd;margin:0;padding:4px 2px;max-height:125px}
.adventure-copy{min-width:0}
.adventure-region{font:11px/1.6 var(--serif);color:#b5ba9e;margin-bottom:6px}
.adventure-challenge{display:flex;justify-content:space-between;gap:7px;font-size:11px;line-height:1.4;color:#c8b37f;margin:0 0 7px}
.adventure-description{font:13px/1.65 var(--serif);color:#d3d2b9;margin-bottom:10px}
.adventure-reward{display:flex;align-items:baseline;gap:10px;font-size:11px;color:#9fb19e;margin-bottom:8px}
.adventure-reward b{font:15px GameRoman,var(--serif);font-weight:500;color:#dac18e}
.adventure-reward small{font-size:11px;margin-left:auto;white-space:nowrap}
.adventure-start{min-height:44px;width:100%;font:15px var(--kai);padding:8px 5px}
.adventure-entry.locked .adventure-portrait{opacity:.45}
.adventure-entry.locked .adventure-copy{opacity:.7}
.screen-battle .encounter-opponent{height:100%;width:95px;min-height:0;object-fit:contain;opacity:.8}
.result-score{width:100%;max-width:310px;flex:none;border-top:1px solid #9b97613b;border-bottom:1px solid #9b97613b;margin-top:18px;padding:12px 0;text-align:left}
.result-score>div{display:flex;align-items:center;justify-content:space-between;gap:20px}
.result-score>div>span{font:15px var(--kai);color:#c8bf9e}
.result-score strong{font:32px/1 GameRoman,var(--serif);font-variant-numeric:tabular-nums;color:#e9d092}
.result-score strong small{font:11px var(--font);margin-left:5px;color:#aab59f}
.result-score summary{font-size:11px;min-height:30px;display:flex;align-items:center;color:#a8b399;cursor:pointer}
.result-score summary:after{content:'›';margin-left:6px}
.result-score details[open] summary:after{transform:rotate(90deg)}
.result-score dl{display:flex;flex-direction:column;gap:4px;padding:2px 0 0;margin:0}
.result-score dl>div{display:flex;justify-content:space-between;gap:12px;font-size:11px;color:#acb6a0}
.result-score dd{margin:0;font-variant-numeric:tabular-nums;color:#d5c69e}
.result-screen>.adventure-result-name{font:14px var(--kai);color:#dac18d;margin:-3px 0 10px}
.result-screen>.adventure-result-progress{font-size:11px;color:#b4c4a9;margin-top:10px}
@media(max-width:360px){.adventure-entry{grid-template-columns:67px minmax(0,1fr);gap:10px}.adventure-portrait{width:67px}.adventure-portrait img{width:56px}.adventure-portrait h3{font-size:14px}.adventure-reward{gap:6px}.adventure-challenge{font-size:11px;flex-wrap:wrap}.camp-secondary .secondary{font-size:13px}.result-score strong{font-size:28px}}

/* Finish belongs to the printed surface and rim, never a wash over the portrait. */
.poker-card.tier-1:after{content:none;display:none}
.poker-card.tier-2:after,.poker-card.tier-3:after,.poker-card.tier-4:after{content:none;display:none;background:none;mix-blend-mode:normal}
.poker-card.tier-2{--metal-light:#edf2ee;--metal-mid:#a8b8b3;--metal-dark:#60736f;border-color:#adbdb5;box-shadow:0 2px 5px #0005}
.poker-card.tier-3{--metal-light:#efe0ad;--metal-mid:#c39b51;--metal-dark:#795525;border-color:#b28a45;box-shadow:0 2px 5px #0005}
.poker-card.tier-4{--metal-light:#e6e5d0;--metal-mid:#b1bdb7;--metal-dark:#6b7c79;border-color:#b5c3b9;box-shadow:0 2px 5px #0005}
.card-surface{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden;border-radius:inherit}
.card-surface>i{position:absolute;display:block;pointer-events:none}
.metal-edge,.surface-sweep{inset:0;padding:1.4px;border-radius:inherit;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.metal-edge{background:linear-gradient(135deg,var(--metal-light),var(--metal-mid) 19%,var(--metal-dark) 33%,var(--metal-light) 51%,var(--metal-mid) 73%,var(--metal-light));opacity:.76}
.tier-2 .metal-edge{padding:1px;opacity:.73}
.tier-3 .metal-edge{padding:1.5px;background:linear-gradient(132deg,#e1c17a,#82602c 19%,#e8d398 35%,#a37a35 53%,#d8b360 69%,#765427 82%,#eedca4)}
.tier-4 .metal-edge{padding:1.2px;background:linear-gradient(125deg,#dbe5d9,#afbfc3 22%,#d7cbaa 40%,#b4a9c7 58%,#abc4bf 79%,#e1dfc5);opacity:.78}
.ink-ornament{left:0;bottom:0;width:42%;height:23%;opacity:.48;background:radial-gradient(ellipse at 0 100%,transparent 50%,#66502636 51%,#66502636 52%,transparent 53%),repeating-linear-gradient(36deg,transparent 0 7px,#70532624 7px 8px,transparent 8px 13px);mask-image:linear-gradient(35deg,#fff,transparent 72%);mix-blend-mode:multiply}
.tier-4 .ink-ornament{opacity:.2}
.surface-sweep{opacity:0;background:linear-gradient(112deg,transparent 39%,#fffbe966 45%,#ffffffdd 49%,#fffbee77 53%,transparent 59%);background-size:280% 100%;background-position:140% 50%}
.foil-highlights{inset:0;overflow:hidden;mask-image:linear-gradient(180deg,transparent 0 60%,#fff 73%,#fff 94%,transparent 100%);mask-mode:alpha}
.foil-highlights>i{display:block;position:absolute;inset:0;background:linear-gradient(108deg,transparent 30%,#d8c39f80 39%,#a9cecf99 45%,#ccc0d690 51%,#c8d3aa80 57%,transparent 65%);background-size:240% 100%;background-position:60% 50%;opacity:.14;mix-blend-mode:screen;mask-image:var(--card-art);mask-mode:luminance;mask-size:var(--card-mask-size,cover);mask-position:50% 30%;mask-repeat:no-repeat}
.poker-card:is(:active,:focus-visible,.selected) .surface-sweep,.is-revealing .reveal-focus-card .surface-sweep{animation:card-rim-sweep .64s ease-out both}
.poker-card:is(:active,:focus-visible,.selected) .foil-highlights>i,.is-revealing .reveal-focus-card .foil-highlights>i{animation:card-highlight-sweep .78s ease-out both}
.hero-large .metal-edge,.reveal-focus-card .metal-edge{animation:card-metal-breathe 17s ease-in-out infinite}
.hero-large .foil-highlights,.reveal-focus-card .foil-highlights{animation:card-highlight-breathe 21s ease-in-out infinite}
@keyframes card-rim-sweep{0%{background-position:140% 50%;opacity:0}20%{opacity:.48}63%{opacity:.68}100%{background-position:-35% 50%;opacity:0}}
@keyframes card-highlight-sweep{0%{background-position:135% 50%;opacity:.05}42%{opacity:.23}100%{background-position:-25% 50%;opacity:.08}}
@keyframes card-metal-breathe{0%,100%{opacity:.63}50%{opacity:.8}}
@keyframes card-highlight-breathe{0%,100%{opacity:.48}50%{opacity:.76}}
@supports not (mask-mode:luminance){.foil-highlights{display:none}}
.reduced-motion .card-surface *{animation:none!important;transition:none!important}
.reduced-motion .surface-sweep{display:none}
.reduced-motion .foil-highlights>i{opacity:.1}
@media(prefers-reduced-motion:reduce){.card-surface *{animation:none!important;transition:none!important}.surface-sweep{display:none}.foil-highlights>i{opacity:.1}}

/* v0.3: ordinary poker below; named companions hold their place above. */
.basic-poker{background:#f2ecdc;border-color:#d1c9b3;color:#292a27;box-shadow:0 2px 4px #0006}
.basic-poker:before{content:none;background:none}
.basic-poker.red-suit{color:#922f27}
.basic-poker .card-index{color:inherit;background:transparent;padding:0;top:4px;left:5px;min-width:16px;line-height:.9}
.basic-poker .card-index>b{font-family:GameRoman,Georgia,serif;font-weight:600;color:inherit}
.basic-poker .card-index>i{font-family:Georgia,'Times New Roman',serif;font-style:normal;line-height:1;color:inherit}
.basic-poker .card-index-bottom{display:flex;top:auto;left:auto;bottom:4px;right:5px;opacity:1}
.basic-pips{position:absolute;inset:17% 19%;color:inherit;pointer-events:none}
.basic-pips i{position:absolute;transform:translate(-50%,-50%);font:22px/1 Georgia,'Times New Roman',serif;font-style:normal;color:inherit}
.basic-pips .reverse-pip{transform:translate(-50%,-50%) rotate(180deg)}
.basic-face{position:absolute;inset:14% 17%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:3px;font:54px/.9 GameRoman,Georgia,serif;border:1px solid #756f5226;pointer-events:none;color:inherit}
.basic-face small{font:27px/1 Georgia,serif;color:inherit}
.basic-joker{font:32px/1.2 var(--serif);writing-mode:vertical-rl;letter-spacing:2px;border:0}
.basic-joker small{font:9px GameRoman,Georgia,serif;letter-spacing:1px;writing-mode:vertical-rl}
.screen-battle .hand-card-slot{position:relative;min-width:0;min-height:0;height:var(--hand-card-height)}
.screen-battle .hand-card-slot .hand-card{height:100%;width:100%}
.screen-battle .hand-card-slot .card-index-bottom{font-size:14px}
.screen-battle .hand-card-slot .card-index-bottom b,.screen-battle .hand-card-slot .card-index-bottom i{font-size:13px}
.screen-battle .hand-card-slot .basic-poker .card-index-bottom{display:flex}
.screen-battle .hand-card-slot.is-selected .card-copies{visibility:hidden}
.layers-button{position:absolute;left:2px;bottom:1px;z-index:5;width:46px;height:44px;min-height:44px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1px;border:1px solid #88795199;border-radius:2px;background:#efe6cfee;color:#352f24;padding:0;box-shadow:0 1px 3px #0003}
.layers-button small{font:10px var(--serif)}.layers-button b{font:17px/1 GameRoman,Georgia,serif;font-weight:500}
.is-selected .layers-button{transform:translateY(-4px)}
.support-rail{padding:2px 16px 6px;flex:none;min-height:0;border-bottom:1px solid #6f87682b;background:linear-gradient(#0d201b33,#10272088)}
.support-rail-heading{display:flex;justify-content:space-between;gap:10px;font:10px/1.5 var(--serif);color:#aab4a1;margin-bottom:4px;min-height:15px}
.support-rail-heading>small{font-size:10px;color:#a5b2a0}
.support-slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.support-slot{position:relative;display:grid;grid-template-columns:36px minmax(0,1fr);gap:5px;height:60px;min-width:0;border-bottom:1px solid #8d98673d;transition:background-color .18s}
.support-slot.will-trigger{background:#aba16e17;border-bottom-color:#c5af71}
.support-slot .support-portrait{height:57px;width:36px;border-width:1px;border-radius:2px;box-shadow:none}
.support-portrait .card-index,.support-portrait .card-index-bottom,.support-portrait .card-caption,.support-portrait .card-copies{display:none}
.support-copy{display:flex;flex-direction:column;justify-content:center;gap:3px;min-width:0;padding-bottom:3px}
.support-copy>strong{font:12px/1.15 var(--kai);color:#e0d0a8;white-space:nowrap}
.support-copy>span{font:10px/1 var(--serif);color:#a7b9a3}
.support-copy>small{font:10px/1.4 var(--serif);color:#cabf99;overflow-wrap:anywhere;max-height:28px;overflow:hidden}
.support-vacant{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;border:1px dashed #a1a16f33;color:#abbda3;font:11px var(--kai);padding:4px}
.support-vacant small{font:9px/1.3 var(--serif);color:#93a98f;text-align:center}
.support-vacant.locked{opacity:.5}
.support-preview-count{font:11px var(--serif);color:#bbbf9f;text-align:right;flex:none}
.screen-battle .battle-field{min-height:130px;padding-top:4px;padding-bottom:47px}
.screen-battle .played-cards{height:67px;flex-basis:67px;min-height:45px}
.screen-battle .played-cards .poker-card{height:65px;min-width:0;width:100%}
.screen-battle .played-cards .basic-pips{inset:18% 19%}
.screen-battle .played-cards .basic-pips i{font-size:10px}
.screen-battle .played-cards .basic-face{font-size:24px}.screen-battle .played-cards .basic-face small{font-size:14px}
.screen-battle .played-cards .basic-joker{font-size:19px}.screen-battle .played-cards .basic-joker small{font-size:6px}
.screen-battle .played-cards .basic-poker .card-index b,.screen-battle .played-cards .basic-poker .card-index i{font-size:12px}
.screen-battle .played-cards .basic-poker .card-index-bottom{display:none}
.screen-battle .hand-area{--hand-card-height:clamp(91px,29vw,114px)}
.screen-battle .basic-poker .card-index b,.screen-battle .basic-poker .card-index i{font-size:19px}
.screen-battle .basic-poker .joker-rank{font-size:10px!important;letter-spacing:0}
.screen-battle .hand-announcement strong{font-size:22px}
.screen-battle .battle-feedback{min-height:42px}
.screen-battle .battle-feedback.is-preview{gap:6px}
.collection-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:22px;border-bottom:1px solid #8c93614d}
.collection-tabs button{min-height:44px;padding:9px 2px;background:transparent;border:0;color:#a1b49a;font:16px var(--kai);border-bottom:2px solid transparent}
.collection-tabs button.active{color:#edd8a7;border-bottom-color:#d0ac68}
.collection-section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:9px}
.collection-section-heading h3,.collection-subtitle{font:20px var(--kai);color:#e3cda4;margin:0}
.collection-section-heading span{font-size:12px;color:#b5c0a3}
.collection-subtitle{margin:25px 0 13px;font-size:18px}
.deck-summary{display:flex;gap:20px;font-size:11px;color:#a7b9a0;margin:0 0 18px}.deck-summary b{font:17px GameRoman,var(--serif);color:#e0c494}
.collection-screen .collection-hint{font:12px/1.8 var(--serif);color:#bec8b0;margin-bottom:17px}
.collection-screen .collection-filter{margin-bottom:20px}
.deck-card-grid .collection-card{aspect-ratio:2/3}
.deck-card-grid .basic-pips i{font-size:23px}.deck-card-grid .basic-face{font-size:48px}
.collection-card.basic-poker .card-index-bottom{display:flex}.collection-card.basic-poker .card-index-bottom b,.collection-card.basic-poker .card-index-bottom i{font-size:15px}
.collection-onboarding{text-align:center;padding:30px 0 35px;color:#b9c5af}
.collection-onboarding h3{font:23px/1.6 var(--kai);color:#e4d2aa;margin:16px 0 11px}
.collection-onboarding p{font:13px/1.9 var(--serif);margin-bottom:23px}
.collection-onboarding>.primary{min-height:46px;min-width:170px}
.onboarding-seal{font:13px var(--serif);writing-mode:vertical-rl;display:inline-block;letter-spacing:3px;border:1px solid #a98053;padding:9px 5px;color:#c4a36e}
.copy-state{font-size:10px;color:#a7b59e;margin:4px 0}
.support-management{display:flex;flex-direction:column;gap:17px}
.support-manage-row{display:grid;grid-template-columns:64px minmax(0,1fr);gap:7px 13px;border-bottom:1px solid #8191652f;padding-bottom:17px}
.support-manage-card{width:64px;height:96px;grid-row:span 2}
.support-manage-card .card-caption{font-size:9px}.support-manage-card .card-index>b,.support-manage-card .card-index>i{font-size:15px}
.support-manage-row>div>strong,.support-candidate strong{font:17px/1.5 var(--kai);color:#ddcba4}
.support-manage-row strong small,.support-candidate strong small{font:11px var(--serif);color:#a8b5a0}
.support-manage-row p,.support-candidate p{font:12px/1.7 var(--serif);color:#bac4a9;margin:4px 0}
.support-manage-row>div>span{font-size:10px;color:#98ad94}
.support-order-actions{display:flex;gap:7px;grid-column:2;align-items:center}
.support-order-actions button{flex:1;min-height:44px;font-size:12px;padding:7px 3px}
.support-candidate{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #8895682b;padding:11px 0}
.support-candidate .compact{min-height:44px;min-width:65px;font-size:13px}
.hero-footer-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:7px;font-size:10px;color:#a9b8a0}
.hero-footer-meta .text-button{font-size:12px;min-height:32px;padding:4px 1px}
.fusion-protection{font-size:11px;line-height:1.7;color:#a9bca3;margin:9px 0 15px}
.tavern-v03{display:block;overflow-y:auto;overscroll-behavior:contain;min-height:0;padding:12px 24px 28px;background:linear-gradient(#10231a1a,#11271bd9 38%,#102319f5 100%)}
.tavern-v03 .tavern-sign{height:156px;min-height:0;position:relative;margin:0 0 20px;padding:5px 0;display:flex;align-items:flex-start;justify-content:space-between;flex-direction:row;gap:12px}
.tavern-v03 .tavern-sign>span{font:13px/1.8 var(--kai);color:#ead2a5;writing-mode:vertical-rl;letter-spacing:2px;background:#162821b3;padding:7px 4px;border:1px solid #baa06a66}
.tavern-v03 .tavern-sign h2{font:26px/1.7 var(--kai);writing-mode:vertical-rl;color:#f0dab1;margin:0;text-shadow:0 2px 8px #071910}
.tavern-v03 .tavern-bottom{padding:0;position:static}
.tavern-v03 .tavern-bottom>p{font:12px/1.7 var(--serif);color:#d2d2b7;margin-bottom:12px}
.tavern-v03 .recruit-button{min-height:63px;flex-direction:column;gap:7px;font-size:22px}
.tavern-v03 .recruit-button small{font-size:11px}
.tavern-wishlist,.tavern-visit{border-top:1px solid #b09b6147;margin-top:23px;padding-top:17px;text-align:left}
.tavern-section-title{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:10px}
.tavern-section-title h3{font:20px var(--kai);color:#e3cb9b;margin:0}
.tavern-section-title>span{font-size:11px;color:#bcbd9c}
.tavern-wishlist p,.tavern-visit p{font:12px/1.7 var(--serif);color:#bec6ad;margin:9px 0 13px}
.wishlist-controls{display:grid;grid-template-columns:minmax(0,1fr) 60px;gap:8px}
.wishlist-controls>.game-select,.tavern-visit>.game-select{width:100%;min-width:0;min-height:44px;margin:0;font-size:13px}
.wishlist-controls>.compact{font-size:13px;min-height:44px}
.visit-active>strong{font:17px var(--kai);color:#dfc495}
.tavern-visit>.wide,.visit-active>.wide{min-height:44px;font-size:15px}
.tavern-v03 .recruit-rates{margin-top:20px;text-align:left}
.tavern-v03 .recruit-rates p{font-size:11px;line-height:1.8;color:#b0bda2}
@media(max-width:360px){
 .support-rail{padding-left:12px;padding-right:12px}.support-slots{gap:5px}.support-slot{grid-template-columns:29px minmax(0,1fr);gap:4px}.support-slot .support-portrait{width:29px;height:49px}.support-copy>strong{font-size:11px}.support-copy>span{font-size:9px}.support-copy>small{font-size:9px;line-height:1.5}.support-slot{height:53px}.support-vacant{padding:3px}.support-vacant small{font-size:8px}
 .screen-battle .hand-area{padding-left:12px;padding-right:12px}.basic-pips i{font-size:19px}.basic-face{font-size:43px}.basic-face small{font-size:23px}
 .collection-tabs button{font-size:15px}.collection-onboarding h3{font-size:21px}.support-manage-row{gap:7px 10px}.support-manage-row>div>strong{font-size:16px}.tavern-v03{padding-left:20px;padding-right:20px}.support-preview-count{font-size:10px}
}
@media(max-height:700px){
 .screen-battle .hand-area{--hand-card-height:90px}.screen-battle .battle-top{height:38px}.screen-battle .battle-top strong{font-size:18px}.screen-battle .enemy-zone{min-height:31px}.support-rail{padding-top:0;padding-bottom:4px}.support-slot{height:50px}.support-slot .support-portrait{height:48px;width:30px}.support-slot{grid-template-columns:30px minmax(0,1fr)}.support-rail-heading{font-size:9px;min-height:13px;margin-bottom:2px}.support-rail-heading small{font-size:9px}.support-copy{gap:2px}.support-copy>small{font-size:9px;line-height:1.3}.support-copy>strong{font-size:11px}.support-copy>span{font-size:9px}
 .screen-battle .battle-field{min-height:100px;padding:2px 16px 39px}.screen-battle .played-cards{height:43px;min-height:30px;flex-basis:43px}.screen-battle .played-cards .poker-card{height:43px}.screen-battle .hand-announcement{min-height:19px;margin-top:3px}.screen-battle .hand-announcement strong{font-size:19px}.screen-battle .battle-feedback{min-height:36px}.screen-battle .battle-log{font-size:11px;max-height:29px}.screen-battle .battle-skill{display:none}.screen-battle .player-zone{min-height:36px;padding-top:1px;padding-bottom:1px}.screen-battle .health-label{margin-bottom:2px}.screen-battle .hand-tools{height:44px}.screen-battle .battle-actions{padding-top:6px;padding-bottom:calc(6px + env(safe-area-inset-bottom,0px))}.screen-battle .battle-actions button{height:44px;font-size:18px}
 .screen-battle .basic-face{font-size:37px}.screen-battle .basic-face small{font-size:20px}.screen-battle .basic-pips i{font-size:17px}.screen-battle .played-cards .basic-pips{display:none}.screen-battle .played-cards .basic-face{font-size:18px}.screen-battle .played-cards .basic-face small{font-size:10px}.screen-battle .played-cards .basic-poker .card-index b,.screen-battle .played-cards .basic-poker .card-index i{font-size:13px}
 .tavern-v03 .tavern-sign{height:108px;margin-bottom:15px}.tavern-v03 .tavern-sign h2{font-size:22px}
}
@media(max-height:600px){
 .screen-battle .hand-area{--hand-card-height:78px}.screen-battle .hand-grid{gap:6px}.screen-battle .battle-field{min-height:91px}.support-slot{height:42px}.support-slot .support-portrait{height:41px;width:27px}.support-slot{grid-template-columns:27px minmax(0,1fr)}.support-copy>span{display:none}.support-copy>small{font-size:8.5px}.support-vacant small{font-size:8px}.screen-battle .hand-card.hero-poker .card-caption{writing-mode:vertical-rl;flex-direction:row;gap:2px;top:6px;bottom:5px;right:2px;left:auto;max-height:65px}.screen-battle .hand-card.hero-poker .card-nickname{font-size:10px;line-height:1.1}.screen-battle .hand-card.hero-poker .card-name{font-size:8px;line-height:1.1}.screen-battle .basic-poker .card-index b,.screen-battle .basic-poker .card-index i{font-size:17px}.screen-battle .basic-face{font-size:31px}.screen-battle .basic-face small{font-size:17px}.screen-battle .basic-pips{inset:17% 24%}.screen-battle .basic-pips i{font-size:14px}.screen-battle .hand-card-slot .card-index-bottom b,.screen-battle .hand-card-slot .card-index-bottom i{font-size:11px}.screen-battle .table-seal{width:38px;height:38px;font-size:29px}.screen-battle .deck-stack{min-height:34px}.screen-battle .deck-back{height:25px;width:18px}.screen-battle .player-zone{min-height:33px}.screen-battle .selection-label{font-size:10px}.screen-battle .selection-label b{font-size:11px}.screen-battle .play-estimate strong{font-size:12px}.screen-battle .play-estimate small{font-size:9px}.tavern-v03 .tavern-sign{height:80px}.tavern-v03 .tavern-sign h2{font-size:19px}
}
.legacy-battle-note{flex:none;font:10px/1.5 var(--serif);text-align:center;padding:3px 10px;color:#b4bda4;background:#192e2580}
.result-screen>.victory-cause{font:13px/1.6 var(--serif);color:#e4c78d;padding:8px 13px;border-top:1px solid #a6a06d40;border-bottom:1px solid #a6a06d40;margin:14px 0 0;text-shadow:none}
.quiet-result>.victory-cause{font-size:12px;color:#bfc5ac;border-color:#778a7040}

/* Direct manipulation: paper keeps its shape, while destinations reveal themselves. */
[data-action="select-card"],[data-drag-hero-uid],[data-support-uid]{touch-action:none;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}
[data-drag-hero-uid],[data-support-uid]{cursor:grab}
.gesture-active [data-drag-hero-uid],.gesture-active [data-support-uid]{cursor:grabbing}
.hand-card.gesture-selected{transform:translateY(-4px);box-shadow:0 0 0 2px #dfc37b,0 5px 9px #0009;outline:0}
.hand-card.gesture-unselected{transform:none;box-shadow:0 2px 5px #0005;outline:0}
.gesture-unselected .selected-tick{opacity:0}
.gesture-source{opacity:.32!important}
.gesture-ghost{position:fixed!important;z-index:500!important;pointer-events:none!important;box-sizing:border-box!important;opacity:.96!important;transition:none!important;pointer-events:none;filter:drop-shadow(0 8px 11px #0008);will-change:transform;overflow:hidden}
.gesture-ghost .card-index b,.gesture-ghost .card-index i{font-size:18px}
.gesture-ghost .card-index-bottom b,.gesture-ghost .card-index-bottom i{font-size:12px}
.gesture-drop-ready{position:relative;outline:2px solid #c6b475!important;outline-offset:3px;background-color:#a7985222!important}
.gesture-drop-blocked{position:relative;outline:2px solid #9d6552!important;outline-offset:3px}
.gesture-drop-ready:after,.gesture-drop-blocked:after,.poker-card.gesture-drop-ready:after,.poker-card.gesture-drop-blocked:after{content:attr(data-gesture-hint)!important;display:block!important;position:absolute;left:50%;right:auto;top:50%;bottom:auto;transform:translate(-50%,-50%);width:max-content;max-width:94%;height:auto;background:#263b2af2!important;color:#ebd6a5;opacity:1!important;mix-blend-mode:normal!important;font:12px/1.5 var(--kai);padding:6px 8px;border:1px solid #b4a26399;border-radius:2px;z-index:8;pointer-events:none;text-align:center;white-space:normal}
.gesture-drop-blocked:after,.poker-card.gesture-drop-blocked:after{background:#432d24f2!important;border-color:#a2795d99;color:#e7cab1}
.battle-field.gesture-drop-ready:after,.battle-field.gesture-drop-blocked:after{font-size:19px;padding:9px 18px;max-width:85%}
.layers-button{width:44px;height:44px;background:transparent;border:0;box-shadow:none;justify-content:flex-end;align-items:flex-start;padding:0 0 4px 3px}
.layers-button>b{display:block;font:12px/1 GameRoman,Georgia,serif;background:#e8dfc6f2;color:#392f24;border:1px solid #99855788;border-radius:2px;padding:4px 5px;box-shadow:0 1px 2px #0002}
.layers-button:focus-visible{outline:2px solid #d6c38c;outline-offset:0}
.collection-tabs{position:sticky;top:0;z-index:12;background:#132725f5;padding-top:2px}
.drag-candidate-rail{display:flex;gap:11px;overflow-x:auto;overflow-y:hidden;padding:10px 6px 8px;margin:0 -6px 18px;scrollbar-width:thin;position:sticky;top:47px;z-index:11;background:#152d28f5;border-top:1px solid #8f9d683d;border-bottom:1px solid #8f9d683d;overscroll-behavior-x:contain}
.drag-candidate{width:58px;flex:none;display:flex;flex-direction:column;align-items:center;gap:5px}
.drag-candidate-card{height:83px;width:58px}
.drag-candidate>span{font:10px var(--kai);color:#cbbc94}
.drag-candidate-card .card-index>b,.drag-candidate-card .card-index>i{font-size:16px}
.drag-candidate-card .card-caption{display:none}
.deck-card-grid .collection-card-info b{display:none}
.support-management{position:relative;min-height:60px}
.support-management:empty{border:1px dashed #a7a26b5c}
.support-manage-row{position:relative}
.support-order-menu{grid-column:2;min-width:0}
.support-order-menu>summary{min-height:44px;font:12px/44px var(--serif);color:#b8b18f;cursor:pointer;list-style-position:inside}
.support-order-menu .support-order-actions{margin-top:0;grid-column:auto}
.support-order-menu:not([open]) .support-order-actions{display:none}
.support-candidate-card{width:43px;height:64px;flex:none;border-width:1px}
.support-candidate-card .card-caption{display:none}.support-candidate-card .card-index b,.support-candidate-card .card-index i{font-size:13px}.support-candidate-card .card-index-bottom{display:none}
.support-candidate{gap:10px}.support-candidate>div{flex:1;min-width:0}.support-candidate .compact{min-width:51px;padding:7px 8px}
.collection-subtitle{font-size:16px}
@media(max-height:600px){.drag-candidate-rail{gap:9px;padding:7px 6px}.drag-candidate{width:48px}.drag-candidate-card{width:48px;height:68px}.drag-candidate>span{font-size:9px}.layers-button{padding-bottom:1px}.layers-button>b{font-size:10px;padding:3px 4px}}
@media(prefers-reduced-motion:reduce){.gesture-ghost{will-change:auto;filter:none}}
.reduced-motion .gesture-ghost{will-change:auto;filter:none}

.support-slot[data-support-keyboard="true"]:focus-visible{outline:2px solid #dbc58b;outline-offset:2px;background:#58634538}

/* One hand of cards: a shallow arc, readable exposed indices, stable hit order. */
.screen-battle .hand-area{--fan-card-width:clamp(86px,25.5vw,106px);--hand-card-height:calc(var(--fan-card-width)*1.5);--fan-lift:22px;padding:0 18px 2px;background:linear-gradient(180deg,#111f2000,#0d191bbd 36%,#0d191b);border-top:0}
.screen-battle .hand-tools{max-width:none;height:44px;margin:0 auto}
.screen-battle .hand-grid.hand-fan{display:grid;grid-template-columns:repeat(var(--hand-gaps),minmax(0,1fr)) var(--fan-card-width);grid-template-rows:var(--hand-card-height);grid-auto-flow:column;grid-auto-columns:auto;gap:0;width:min(100%,calc(var(--fan-card-width) + var(--hand-gaps)*44px));max-width:none;margin:0 auto;padding:27px 0 13px;overflow:visible;isolation:isolate}
.screen-battle .hand-fan[data-hand-count="1"]{grid-template-columns:var(--fan-card-width)}
.screen-battle .hand-fan[data-hand-count="0"]{display:flex;width:100%;align-items:center;justify-content:center;min-height:110px;padding:16px 0}
.hand-empty-note{font:14px var(--kai);color:#aeb69f}
.screen-battle .hand-fan .hand-card-slot{width:var(--fan-card-width);height:var(--hand-card-height);z-index:var(--fan-order);transform:translateY(var(--fan-arc)) rotate(var(--fan-angle));transform-origin:50% 100%}
.screen-battle .hand-fan .hand-card{width:100%;height:100%;border-radius:4px;border-width:1px;box-shadow:-3px 1px 7px #0004,0 6px 12px #0003;transition:transform .14s ease-out,border-color .14s,box-shadow .14s;transform:translateY(0);touch-action:none}
.screen-battle .hand-fan .hand-card.selected,.screen-battle .hand-fan .hand-card.gesture-selected{transform:translateY(calc(-1*var(--fan-lift)));border-color:#e6cd8f;box-shadow:0 0 0 1px #d6bc7e,-4px 5px 9px #0005}
.screen-battle .hand-fan .hand-card.gesture-unselected{transform:translateY(0);border-color:#d1c9b3;box-shadow:-3px 1px 7px #0004,0 6px 12px #0003}
.screen-battle .hand-fan .hand-card:focus-visible{outline:2px solid #f1ddb0;outline-offset:2px}
.screen-battle .hand-fan .card-index:not(.card-index-bottom){top:5px;left:5px;min-width:19px;padding:1px 0;gap:0;border-radius:0}
.screen-battle .hand-fan .card-index b,.screen-battle .hand-fan .card-index i{font-size:23px;line-height:1}
.screen-battle .hand-fan .card-index .joker-rank{font-size:13px;writing-mode:vertical-rl;line-height:1.1;letter-spacing:1px}
.screen-battle .hand-fan .card-index-bottom b,.screen-battle .hand-fan .card-index-bottom i{font-size:13px}
.screen-battle .hand-fan .hand-card .card-caption{top:55px;left:5px;right:auto;bottom:auto;max-height:calc(100% - 74px);padding:3px 2px;width:17px;gap:0;border-left:0;border-right:1px solid #9c8c6240;overflow:hidden}
.screen-battle .hand-fan .hand-card .card-nickname{font-size:12px;line-height:1.1;letter-spacing:.2px}
.screen-battle .hand-fan .hand-card .card-name{display:none}
.screen-battle .hand-fan .card-copies{font-size:10px;left:5px;bottom:5px}
.screen-battle .hand-fan .selected-tick{left:14px;bottom:5px;background:#d1b15d;color:#122829}
.screen-battle .hand-fan .is-selected .layers-button{left:0;bottom:auto;top:-23px;transform:none;width:32px;min-width:0;height:44px;padding:0;justify-content:flex-start;background:transparent;border:0;box-shadow:none}
.screen-battle .hand-fan .layers-button>b{min-width:25px;padding:3px 3px;background:#e6d3a2;color:#37382a;font-size:11px;line-height:1;border-radius:2px;border:1px solid #a5905c88}
.screen-battle .hand-fan .basic-pips{inset:18% 22%}
.screen-battle .hand-fan .basic-pips i{font-size:21px}
.screen-battle .hand-fan .basic-face{font-size:48px}
.screen-battle .hand-fan .basic-face small{font-size:24px}
.screen-battle .hand-fan .basic-joker{font-size:30px}
.screen-battle .hand-fan .basic-joker small{font-size:9px}
@media(max-width:340px){.screen-battle .hand-area{padding-left:14px;padding-right:14px;--fan-card-width:82px}.screen-battle .hand-fan .card-index b,.screen-battle .hand-fan .card-index i{font-size:21px}.screen-battle .hand-fan .card-index .joker-rank{font-size:12px}.screen-battle .hand-fan .hand-card .card-caption{top:51px;max-height:calc(100% - 69px)}.screen-battle .hand-fan .hand-card .card-nickname{font-size:11px}}
@media(max-height:600px){.screen-battle .hand-area{--fan-card-width:80px;--fan-lift:18px}.screen-battle .hand-grid.hand-fan{padding-top:23px;padding-bottom:10px}.screen-battle .hand-fan .is-selected .layers-button{top:-19px}}

/* The opening belongs to a remembered home: worn paper, quiet daylight. */
.scene-old-room,.scene-old-cards,.scene-threshold{background-image:url('./assets/scenes/old-room.webp');background-color:#34392f;background-position:48% 42%;opacity:.94}
.scene-old-room:after,.scene-old-cards:after,.scene-threshold:after{background:linear-gradient(180deg,#141c1f55 0%,#1822200d 28%,#14202222 48%,#101d20a6 78%,#0c191ceb 100%)}
.scene-old-cards{background-size:auto 116%;background-position:48% 57%;filter:saturate(.8)}
.scene-threshold{background-size:auto 122%;background-position:48% 56%;filter:saturate(.58)}
.scene-threshold:after{background:linear-gradient(180deg,#192b2d70,#243e3b24 35%,#18333360 61%,#0c191cf2)}
.screen-prologue .topbar{background:linear-gradient(#192528a6,#19252800)}
.screen-prologue .topbar h1{font-size:18px;color:#ddd8c5}
.prologue-screen{display:grid;grid-template-rows:auto minmax(70px,1fr) auto;gap:12px;padding-top:18px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#796b4d55 transparent}
.prologue-screen .story-heading{display:flex;align-self:start;justify-self:end;margin:0;gap:12px;padding:0 8px;text-shadow:0 2px 12px #14221fd9}
.prologue-screen .story-heading h2{font-size:22px;line-height:1.5;max-height:180px;letter-spacing:3px;color:#f1e8d3}
.prologue-screen .story-heading p{max-height:166px;font-size:12px;line-height:1.8;color:#d7d6c4}
.prologue-still{display:grid;place-items:center;min-height:70px;position:relative;pointer-events:none}
.remembered-cards{position:relative;width:146px;height:143px;transform:rotate(-4deg);filter:drop-shadow(2px 8px 7px #0006)}
.remembered-card{position:absolute;top:0;width:86px;height:130px;border:2px solid #c8c4ac;border-radius:2px;object-fit:cover;filter:saturate(.65) sepia(.14);box-shadow:0 1px 3px #16221bcc}
.remembered-card-back{left:8px;transform:rotate(-11deg) translateY(7px)}
.remembered-card-front{left:48px;transform:rotate(8deg)}
.prologue-screen[data-story-scene="threshold"] .remembered-cards{filter:drop-shadow(0 3px 14px #b5c8ab30) drop-shadow(2px 8px 7px #0006)}
.prologue-screen .dialogue-box{width:100%;padding:17px 18px 7px;background:#101e20eb;border-top:1px solid #b3b7a357;box-shadow:0 -10px 35px #16221b1c}
.prologue-screen .dialogue-person{margin-bottom:9px}
.prologue-screen .dialogue-person h3{font-size:22px;color:#dcd0ae}
.prologue-screen .dialogue-text{min-height:0;font-size:17px;line-height:1.9;color:#e5e0ce}
.prologue-screen .dialogue-actions{margin-top:12px}
.prologue-screen .dialogue-next{font-size:17px;min-height:44px;color:#ddd0a9}
.prologue-replay{display:flex;align-items:center;gap:12px;width:100%;min-height:58px;margin:0 0 15px;padding:8px 0 15px;border-bottom:1px solid #b5b39733;text-align:left}
.prologue-replay>span{font:12px var(--serif);color:#aeb6a2;letter-spacing:2px}
.prologue-replay>strong{font:19px var(--kai);color:#ddd7bd;flex:1}
.prologue-replay>small{font-size:11px;color:#9eab9c}
@media(max-height:700px){.prologue-screen{padding-top:9px;gap:8px;grid-template-rows:auto minmax(56px,1fr) auto}.prologue-screen .story-heading h2{font-size:18px;max-height:132px;letter-spacing:2px}.prologue-screen .story-heading p{font-size:11px;max-height:127px}.remembered-cards{width:119px;height:115px}.remembered-card{width:70px;height:105px}.remembered-card-front{left:40px}.remembered-card-back{left:5px}.prologue-screen .dialogue-text{font-size:16px;line-height:1.8}.prologue-screen .dialogue-box{padding:13px 15px 5px}.prologue-screen .dialogue-actions{margin-top:6px}}
@media(max-height:600px){.prologue-screen{padding:7px 15px calc(13px + env(safe-area-inset-bottom,0px));gap:6px}.prologue-screen .story-heading{gap:9px;padding-right:4px}.prologue-screen .story-heading h2{font-size:17px;max-height:120px}.prologue-screen .story-heading p{font-size:10px;max-height:117px}.prologue-still{min-height:56px}.remembered-cards{height:96px;width:106px}.remembered-card{width:59px;height:88px}.remembered-card-front{left:36px}.prologue-screen .dialogue-person{margin-bottom:6px}.prologue-screen .dialogue-person h3{font-size:20px}.prologue-screen .dialogue-text{font-size:15px;line-height:1.8}.prologue-screen .dialogue-next{font-size:16px}}

/* Tavern packets: a paper seal opens onto three real, readable cards. */
.pack-backdrop{overflow:hidden;overflow:clip;padding:calc(25px + env(safe-area-inset-top,0px)) 20px calc(23px + env(safe-area-inset-bottom,0px));background:radial-gradient(ellipse at 50% 43%,#2d3525b3,#091718ed 75%);backdrop-filter:blur(5px)}
.pack-modal{position:relative;width:100%;max-width:390px;height:min(100%,740px);margin:auto;color:#e5dbc1;isolation:isolate}
.pack-content{height:100%;display:flex;flex-direction:column;min-height:0}
.pack-heading{position:relative;flex:none;min-height:96px;padding:6px 0;text-align:center}
.pack-heading>p{font:12px/1.6 var(--serif);letter-spacing:2px;color:#bbb79f;margin:0 0 9px}
.pack-heading h2{font:34px/1.3 var(--kai);letter-spacing:4px;color:#e9dec4;margin:0}
.pack-count{position:absolute;right:0;top:7px;font:17px GameRoman,Georgia,serif;color:#e0d0ac;font-variant-numeric:tabular-nums}
.pack-count>i{font-style:normal;font-size:12px;color:#9ba896}
.pack-stage{position:relative;flex:1;min-height:288px;display:grid;place-items:center;width:100%;margin:15px 0 8px;perspective:1100px}
.pack-tear{--pack-width:212px;--pack-height:318px;position:absolute;z-index:4;width:var(--pack-width);height:var(--pack-height);padding:0;min-height:0;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-3deg);overflow:visible;touch-action:none;-webkit-user-select:none;user-select:none;filter:drop-shadow(3px 14px 11px #0009)}
.pack-tear:active:not(:disabled){transform:translate(-50%,-50%) rotate(-2deg);filter:drop-shadow(3px 10px 8px #0009)}
.pack-tear:focus-visible{outline:2px solid #c9b590;outline-offset:12px}
.pack-tear:disabled{opacity:1;cursor:default}
.pack-shell{position:relative;display:block;width:100%;height:100%;color:#442d20;isolation:isolate}
.pack-cap,.pack-body{position:absolute;left:0;right:0;background-color:#bcaa7f;background-image:url('./assets/pack/hero-packet.webp');background-repeat:no-repeat;background-size:100% var(--pack-height);border:1px solid #725e3f99;box-shadow:inset 2px 0 #e3d7ad66,inset -3px 0 #68553938}
.pack-cap{transform:translate(calc(var(--tear-progress,0)*40px),calc(var(--tear-progress,0)*-6px)) rotate(calc(var(--tear-progress,0)*7deg));height:calc(var(--pack-height)*.14);top:0;z-index:2;transform-origin:0 80%;background-position:top center;border-bottom:0;clip-path:polygon(0 0,100% 0,100% 90%,96% 94%,90% 88%,84% 94%,78% 90%,72% 97%,65% 90%,60% 95%,53% 89%,47% 96%,40% 90%,34% 96%,26% 89%,21% 94%,15% 89%,8% 96%,0 91%)}
.pack-cap>i{position:absolute;left:12px;right:12px;bottom:8px;border-bottom:1px dashed #684f3699}
.pack-cap>span{display:block;font:10px/1.4 var(--serif);letter-spacing:4px;text-align:center;padding-top:14px;color:#665132}
.pack-body{inset:calc(var(--pack-height)*.14 - 2px) 0 0;background-position:bottom center;overflow:hidden;display:flex;align-items:center;flex-direction:column;justify-content:center;padding:22px 18px 20px;clip-path:polygon(0 1%,8% 0,15% 2%,21% 0,26% 1%,34% 0,40% 2%,47% 0,53% 2%,60% 0,65% 1%,72% 0,78% 2%,84% 0,90% 2%,96% 0,100% 1%,100% 100%,0 100%)}



.pack-fan{position:relative;z-index:2;width:100%;max-width:356px;display:grid;grid-template-columns:repeat(var(--pack-count),minmax(0,110px));gap:8px;align-items:start;justify-content:center;padding:13px 0 8px}
.pack-card-slot{position:relative;min-width:0;transform:translateY(var(--pack-card-offset)) rotate(var(--pack-card-angle));transform-origin:50% 70%;perspective:900px}
.pack-card-view{display:block;width:100%;padding:0;min-height:0;text-align:center;position:relative;overflow:visible;touch-action:manipulation}
.pack-card-view:disabled{opacity:1}
.pack-card-view:active:not(:disabled){transform:translateY(-3px);filter:none}
.pack-card-view:focus-visible{outline:2px solid #e4c998;outline-offset:7px}
.pack-card-face{display:block;width:100%;backface-visibility:hidden;transform-origin:50% 50%}
.pack-card{width:100%;height:auto;aspect-ratio:2/3;--nickname-size:12px;--name-size:9px;box-shadow:0 9px 14px #0008}
.pack-card .card-index{top:4px;left:4px;min-width:19px;padding:1px}
.pack-card .card-index b,.pack-card .card-index i{font-size:20px}
.pack-card .card-index .joker-rank{font-size:11px}
.pack-card .card-index-bottom{display:none}
.pack-card .card-caption{top:4px;right:3px;gap:2px;padding:3px 2px}
.pack-card .card-copies{font-size:10px;bottom:3px;left:3px}
.pack-card-label{display:flex;flex-direction:column;gap:5px;min-height:45px;padding-top:12px;color:#d4cdb3}
.pack-card-label>strong{font:14px/1.3 var(--kai);letter-spacing:1px;white-space:nowrap}
.pack-card-label>small{font:10px/1.3 var(--serif);color:#aab39f;white-space:nowrap}
.pack-card-back>.card-back{width:100%;aspect-ratio:2/3;height:auto;box-shadow:0 6px 12px #0007;background:#34433b;border-color:#93886c}
.pack-card-back .card-back>i{font-size:42px;color:#c0b39188}
.pack-card-back>span{display:block;text-align:center;margin-top:12px;font:12px var(--kai);color:#8c9a87;min-height:35px}
.pack-modal[data-pack-phase="sealed"] .pack-fan,.pack-modal[data-pack-phase="tearing"] .pack-fan{visibility:hidden}
.pack-modal[data-pack-phase="dealing"] .pack-card-slot.is-pending{visibility:hidden}
.pack-modal[data-pack-phase="dealing"] .pack-tear{z-index:1;opacity:.25;transform:translate(-50%,-22%) rotate(-7deg);pointer-events:none}
.pack-modal[data-pack-phase="complete"] .pack-tear,.pack-modal[data-pack-phase="collecting"] .pack-tear{visibility:hidden;pointer-events:none}
.pack-modal[data-pack-phase="tearing"] .pack-cap{animation:pack-tear-strip .3s cubic-bezier(.3,.05,.5,1) both}
@keyframes pack-tear-strip{from{transform:translate(0,0) rotate(0);opacity:1}to{transform:translate(125px,-52px) rotate(24deg);opacity:0}}
.pack-just-revealed{z-index:4}
.pack-just-revealed .pack-card-face{animation:pack-card-turn .4s cubic-bezier(.18,.72,.28,1) both;animation-delay:calc(-1*var(--pack-reveal-elapsed,0ms))}
.pack-just-revealed .poker-card:is(.tier-2,.tier-3,.tier-4) .surface-sweep{animation:card-rim-sweep .4s ease-out both;animation-delay:calc(-1*var(--pack-reveal-elapsed,0ms))}
.pack-just-revealed .poker-card.tier-4 .foil-highlights>i{animation:card-highlight-sweep .4s ease-out both;animation-delay:calc(-1*var(--pack-reveal-elapsed,0ms))}
@keyframes pack-card-turn{0%{transform:translate(var(--pack-card-fly-x,0%),55px) scale(.78) rotateY(-85deg);filter:brightness(.75);opacity:.2}62%{transform:translate(0,-12px) scale(1.045) rotateY(7deg);filter:brightness(1);opacity:1}82%{transform:translate(0,3px) scale(.99) rotateY(-2deg);opacity:1}100%{transform:translate(0,0) scale(1) rotateY(0);filter:none;opacity:1}}
.pack-status{font:14px/1.6 var(--kai);letter-spacing:1px;flex:none;min-height:44px;text-align:center;margin:0 0 16px;color:#c6c3a9;display:grid;place-items:center}
.pack-footer{flex:none;display:flex;align-items:center;justify-content:space-between;gap:15px;min-height:65px;padding-top:16px;border-top:1px solid #adac8540}
.pack-register{display:flex;gap:9px;align-items:center;font-size:11px;color:#aeb7a1;white-space:nowrap;min-width:99px}
.pack-register>i{width:28px;height:36px;border:1px solid #9b947365;border-left:3px double #9b947385;font:normal 19px/34px var(--kai);text-align:center;color:#b3ac85;transform:rotate(-4deg);background:#23362b}
.pack-register>span{display:flex;gap:4px;align-items:baseline}
.pack-register strong{font:20px GameRoman,Georgia,serif;color:#ddcfab;font-variant-numeric:tabular-nums}
.pack-actions{flex:1;display:flex;justify-content:flex-end;align-items:center;min-height:48px}
.pack-collect{min-height:48px;min-width:160px;padding:10px 15px;font:20px var(--kai);letter-spacing:1px}
.pack-skip{font-size:12px;min-width:88px;color:#aeb6a2;padding-right:0}
.pack-collecting{font:14px var(--kai);color:#b8bea6;text-align:center;display:block;min-width:146px}
.pack-inspect{position:absolute;z-index:8;inset:-15px -12px;display:grid;place-items:center;isolation:isolate}
.pack-inspect-backdrop{position:absolute;inset:0;width:100%;height:100%;background:#0c191bf5;backdrop-filter:blur(8px);z-index:-1;padding:0}
.pack-inspect-content{display:flex;align-items:center;flex-direction:column;gap:18px;pointer-events:none;max-height:100%;overflow-y:auto;padding:20px 0;width:100%}
.pack-inspect-content>p{font:23px var(--kai);letter-spacing:4px;color:#e5d5b0}
.pack-inspect-close{width:190px;max-width:70%;padding:0;min-height:0;pointer-events:auto}
.pack-inspect-card{width:100%;height:auto;aspect-ratio:2/3;--nickname-size:15px;--name-size:11px;box-shadow:0 18px 40px #0009}
.pack-inspect-card .card-index{top:8px;left:8px}.pack-inspect-card .card-index b,.pack-inspect-card .card-index i{font-size:29px}.pack-inspect-card .card-index .joker-rank{font-size:15px}.pack-inspect-card .card-caption{top:8px;right:6px;padding:5px 3px;gap:4px}.pack-inspect-card .card-index-bottom{display:none}
.pack-inspect-content>h3{font:22px var(--kai);color:#e3d6b5;display:flex;align-items:baseline;gap:11px}
.pack-inspect-content>h3>small{font:12px var(--serif);color:#a6b09b}
.pack-inspect-content>span{font-size:11px;color:#99a891;margin-top:2px}
.reduced-motion .pack-just-revealed .pack-card-face,.reduced-motion .pack-modal[data-pack-phase="tearing"] .pack-cap{animation:none!important}
@media(prefers-reduced-motion:reduce){.pack-just-revealed .pack-card-face,.pack-modal[data-pack-phase="tearing"] .pack-cap{animation:none!important}}
@media(max-width:360px){.pack-backdrop{padding-left:15px;padding-right:15px}.pack-fan{gap:6px}.pack-card{--nickname-size:11px;--name-size:8px}.pack-card .card-index b,.pack-card .card-index i{font-size:17px}.pack-card .card-index .joker-rank{font-size:10px}.pack-card-label>strong{font-size:12px;letter-spacing:0}.pack-card-label>small{font-size:9px}.pack-collect{min-width:142px;font-size:18px}.pack-footer{gap:8px}.pack-register{font-size:10px;min-width:95px}.pack-register>i{width:25px;height:33px;line-height:31px}.pack-heading h2{font-size:30px}}
@media(max-height:700px){.pack-backdrop{padding-top:calc(18px + env(safe-area-inset-top,0px));padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}.pack-heading{min-height:76px;padding-top:3px}.pack-heading>p{margin-bottom:5px;font-size:11px}.pack-heading h2{font-size:29px}.pack-stage{min-height:242px;margin-top:8px;margin-bottom:4px}.pack-tear{--pack-width:172px;--pack-height:258px}.pack-cap>span{font-size:9px;padding-top:11px}.pack-status{margin-bottom:8px;font-size:13px}.pack-footer{min-height:60px;padding-top:10px}.pack-inspect-content{gap:13px;padding:12px 0}.pack-inspect-content>p{font-size:21px}.pack-inspect-close{width:177px}.pack-inspect-content>h3{font-size:20px}}
@media(max-height:600px){.pack-heading{min-height:65px}.pack-heading h2{font-size:26px}.pack-stage{min-height:218px;margin:3px 0}.pack-tear{--pack-width:154px;--pack-height:231px}.pack-status{font-size:12px;min-height:34px;margin-bottom:5px}.pack-footer{min-height:54px;padding-top:8px}.pack-collect{min-height:44px}.pack-inspect-close{width:159px}.pack-inspect-content{gap:10px}.pack-inspect-content>p{font-size:18px}.pack-card-label{padding-top:9px;min-height:40px}.pack-fan{padding-top:8px}}

.pack-inspect-backdrop:active:not(:disabled){transform:none;filter:none}

/* Rare finishes remain legible after the reveal; plain paper has no finish layer. */
.pack-modal .poker-card.tier-1 .card-surface{display:none!important}
.pack-modal[data-pack-phase="complete"] .poker-card:is(.tier-2,.tier-3,.tier-4) .surface-sweep{animation:pack-finish-sweep 7.5s ease-in-out infinite;animation-delay:0s}
.pack-modal .poker-card.tier-2{--pack-finish-peak:.46}
.pack-modal .poker-card.tier-3{--pack-finish-peak:.65}
.pack-modal .poker-card.tier-4{--pack-finish-peak:.8;border-color:#b4c8c7}
.pack-modal .poker-card.tier-4 .metal-edge{padding:2px;opacity:.9;background:linear-gradient(128deg,#e4bdca 0%,#b6d8cc 19%,#dbd7ab 37%,#b5bde2 56%,#d2b8d7 74%,#afd5c9 91%,#e6d4b5 100%)}
.pack-modal .poker-card.tier-4 .foil-highlights{display:block;opacity:1;mask-image:linear-gradient(180deg,transparent 10%,#ffffff55 32%,#fff 66%,#fff 91%,transparent 100%)}
.pack-modal .poker-card.tier-4 .foil-highlights>i{background:linear-gradient(112deg,transparent 9%,#e65bc7e0 22%,#f3ca55dd 32%,#5be2c5ee 43%,#74b8f0df 54%,#d976dfe0 63%,#e9cf65de 73%,transparent 86%);background-size:255% 150%;background-position:78% 50%;opacity:.48;mix-blend-mode:screen;mask-image:none;-webkit-mask-image:none}
.pack-modal[data-pack-phase="complete"] .poker-card.tier-4 .foil-highlights>i{animation:pack-prism-shift 8s ease-in-out infinite;animation-delay:0s}
.pack-modal .pack-inspect-card.tier-4 .metal-edge{padding:2.4px}
@keyframes pack-finish-sweep{0%{background-position:145% 50%;opacity:0}12%{opacity:var(--pack-finish-peak,.5)}31%{background-position:-30% 50%;opacity:var(--pack-finish-peak,.5)}39%,100%{background-position:-35% 50%;opacity:0}}
@keyframes pack-prism-shift{0%,100%{background-position:78% 45%;opacity:.46}32%{background-position:20% 55%;opacity:.6}62%{background-position:-25% 50%;opacity:.35}82%{background-position:8% 46%;opacity:.42}}

/* Discreet maker signature, shared with the printed-card palette. */
.game-credit-signature{display:flex;flex:none;flex-direction:column;align-items:center;justify-content:center;min-height:44px;margin-top:2px;color:#b8b6a5;text-decoration:none;font:11px/1.6 var(--font);letter-spacing:.2px}.game-credit-signature i{font-style:normal;padding:0 5px;color:#788b80}.game-credit-signature small{font:10px/1.5 var(--font);color:#9ca99a;letter-spacing:1px}.game-credit-signature:hover,.game-credits a:hover{color:var(--paper)}.game-credit-signature:focus-visible,.game-credits a:focus-visible{outline:2px solid #e8c683;outline-offset:3px}.game-credits{border-top:1px solid var(--line);margin-top:8px;padding-top:22px}.game-credits dl{margin:0}.game-credits dl>div{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:38px}.game-credits dt{font-size:12px;color:var(--muted)}.game-credits dd{margin:0;font-size:14px}.game-credits a{display:inline-flex;align-items:center;gap:9px;min-height:44px;color:var(--copper);text-decoration:none}.game-credits a span{font-size:12px}
@media(max-height:640px){.title-screen .title-start{padding-top:6px}.title-screen .title-links{padding-top:0}.game-credit-signature{margin-top:0}}

.publisher-logo{display:block;width:119px;height:25px;object-fit:contain}.game-credit-signature{flex-direction:row;gap:10px}.game-credit-signature>span{font-size:10px;letter-spacing:2px}.game-credits dd .publisher-logo{width:128px;height:27px}

/* Language editions retain the portrait board; Latin copy reads horizontally. */
.language-choice{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;font:12px/1.4 var(--serif)}
.language-choice select{min-height:44px;min-width:102px;padding:7px 24px 7px 12px;border:1px solid #b89a6266;background:#1b2923;color:#eadab6;border-radius:3px;font:13px/1.4 GameRoman,Georgia,serif}
.title-language{position:absolute;top:calc(8px + env(safe-area-inset-top,0px));right:18px;z-index:2}
.title-language .language-choice>span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
html:not([lang^="zh"]){--serif:Georgia,serif;--kai:GameRoman,Georgia,serif}
html:not([lang^="zh"]) .game-wordmark{flex-direction:column;gap:6px;align-items:center;max-width:100%;margin-top:30px}
html:not([lang^="zh"]) .game-wordmark h1{writing-mode:horizontal-tb;font:clamp(36px,11vw,52px)/1.05 var(--serif);letter-spacing:.015em;overflow-wrap:anywhere;text-align:center}
html:not([lang^="zh"]) .game-wordmark p{writing-mode:horizontal-tb;font:20px/1.25 var(--serif);letter-spacing:.04em;margin:6px 0 0;text-align:center}
html:not([lang^="zh"]) :is(.title-verse,.camp-location>span,.camp-location small,.camp-chapter>p,.camp-chapter h2,.camp-chapter .camp-verse,.story-heading h2,.story-heading p,.packet-title,.reveal-pending>span,.reveal-thumb>span,.reveal-heading h2,.reveal-heading>p:last-child,.onboarding-seal,.adventure-intro h2,.adventure-portrait h3,.tavern-sign h2,.tavern-sign>span,.tavern-v03 .tavern-sign h2,.tavern-v03 .tavern-sign>span,.tavern-v03 .tavern-services dt,.battle-top>div>span){writing-mode:horizontal-tb;text-orientation:mixed;letter-spacing:.025em;max-height:none}
html:not([lang^="zh"]) .title-verse{max-width:260px;text-align:center;font-size:14px;line-height:1.6}
html:not([lang^="zh"]) :is(button,.text-button){letter-spacing:.01em}
html:not([lang^="zh"]) .title-links{gap:8px;flex-wrap:wrap;padding-top:4px}
html:not([lang^="zh"]) .title-links .text-button{font-size:12px;min-height:44px;padding:8px}
html:not([lang^="zh"]) .title-start p{font-size:11px;line-height:1.6}
html:not([lang^="zh"]) .title-start button{font-size:20px}
html:not([lang^="zh"]) .camp-location{flex-direction:column;align-items:flex-start;gap:5px}
html:not([lang^="zh"]) .camp-location>span{border-right:0;border-left:1px solid #b79a655d;padding:3px 0 3px 8px}
html:not([lang^="zh"]) .camp-chapter{display:block;max-width:100%}
html:not([lang^="zh"]) .camp-chapter h2{font-size:26px;max-width:100%;line-height:1.3;overflow-wrap:anywhere}
html:not([lang^="zh"]) .camp-chapter .camp-verse{max-width:100%;font-size:12px;line-height:1.5}
html:not([lang^="zh"]) .story-heading{display:block}
html:not([lang^="zh"]) .story-heading h2{font-size:19px;line-height:1.3;max-width:100%}
html:not([lang^="zh"]) .story-heading p{font-size:11px;line-height:1.45;margin-top:5px}
html:not([lang^="zh"]) .story-text{font-size:14px;line-height:1.65;overflow-wrap:normal;word-break:normal}
html:not([lang^="zh"]) .screen-battle .played-cards .card-caption{writing-mode:horizontal-tb;flex-direction:column;gap:0}
html:not([lang^="zh"]) :is(.card-nickname,.card-name){letter-spacing:0;line-height:1.15}
html:not([lang^="zh"]) .card-nickname{font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html:not([lang^="zh"]) .card-name{font-size:8px}
html:not([lang^="zh"]) .hero-large :is(.card-nickname,.card-name){font-size:12px;white-space:normal;text-align:center}
html:not([lang^="zh"]) .screen-battle .joker-rank{writing-mode:horizontal-tb;font-size:8px;letter-spacing:0}
html:not([lang^="zh"]) .basic-joker{writing-mode:horizontal-tb;letter-spacing:0;font-size:15px}
html:not([lang^="zh"]) .basic-joker small{writing-mode:horizontal-tb}
html:not([lang^="zh"]) .tavern-recruit-caption{font-size:20px;letter-spacing:.02em}
html:not([lang^="zh"]) .packet-title{font-size:25px;text-align:center;padding:0 14px;line-height:1.2}
html:not([lang^="zh"]) .pack-discovery-seal{writing-mode:horizontal-tb;font-size:10px;letter-spacing:0}
html:not([lang^="zh"]) .topbar h1{font-size:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html:not([lang^="zh"]) :is(.journey-button>span,.adventure-portrait h3){font-size:17px}
@media(max-height:640px){html:not([lang^="zh"]) .game-wordmark{margin-top:18px}html:not([lang^="zh"]) .title-verse{margin-top:15px}html:not([lang^="zh"]) .title-screen{padding-left:24px;padding-right:24px}}

html:not([lang^="zh"]) :is(.game-wordmark,.title-verse){text-shadow:0 2px 2px #171108,0 0 16px #170e02}
html:not([lang^="zh"]) .game-wordmark h1{font-family:GameRoman,Georgia,serif}

html:not([lang^="zh"]) .dialogue-text{font-family:Georgia,serif;font-size:15px;line-height:1.65;letter-spacing:0;word-break:normal;overflow-wrap:normal;min-height:0;max-height:min(28dvh,224px);overflow-y:auto;padding-right:3px;scrollbar-width:thin}

html:not([lang^="zh"]) .screen-battle .battle-top>div{min-width:0;flex:1;gap:7px}
html:not([lang^="zh"]) .screen-battle .battle-top strong{min-width:0;font-size:14px;letter-spacing:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html:not([lang^="zh"]) .screen-battle .enemy-count{font-size:10px;min-width:28px;white-space:nowrap}
html:not([lang^="zh"]) .screen-battle .support-rail.no-supports{height:61px;min-height:61px;gap:9px;align-items:center}
html:not([lang^="zh"]) .screen-battle .no-supports>div{min-width:0;flex:1}
html:not([lang^="zh"]) .screen-battle .no-supports>div>span{font:10px/1.4 Georgia,serif;display:block;letter-spacing:0}
html:not([lang^="zh"]) .screen-battle .no-supports small{max-width:45px;font-size:9px;line-height:1.35;text-align:right}
html:not([lang^="zh"]) .screen-battle .hand-fan .card-index .joker-rank{writing-mode:horizontal-tb;letter-spacing:0;font-size:8px;line-height:1.05;overflow-wrap:anywhere}
html:not([lang^="zh"]) .screen-battle .deck-stack{min-width:79px;flex:none}
html:not([lang^="zh"]) .screen-battle .deck-stack small{font-size:9px}
html:not([lang^="zh"]) .screen-battle .support-copy{width:100%;min-width:0;gap:2px}
html:not([lang^="zh"]) .screen-battle .support-copy>strong{font-size:10px;line-height:1.15;letter-spacing:0;white-space:normal;overflow-wrap:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;max-height:23px}
html:not([lang^="zh"]) .screen-battle .support-copy>small{font-size:9px;line-height:1.25;max-height:23px}
