:root{color:#f4f0e8;font-synthesis:none;text-rendering:optimizelegibility;background:#10131a;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 20% 0,#597e972e,#0000 33rem),#10131a;min-width:320px;min-height:100vh;margin:0}button{font:inherit}button:focus-visible{outline-offset:3px;outline:3px solid #f4c56b}.app-shell{width:min(100%,1120px);margin:0 auto;padding:18px 16px 48px}.app-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.brand-button{color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.brand-kicker,.eyebrow{color:#91a2ad;letter-spacing:.16em;margin:0;font-size:.67rem;font-weight:800}.brand-title{letter-spacing:.03em;margin-top:4px;font-family:Georgia,serif;font-size:1.35rem;display:block}.header-progress{text-align:right;color:#bac3c7;font-size:.8rem}.header-progress strong{color:#f5cb78;font-size:1.05rem;display:block}.app-nav{background:#161c24cc;border:1px solid #2b3540;border-radius:14px;grid-template-columns:repeat(3,1fr);gap:7px;padding:6px;display:grid}.nav-button,.text-button{cursor:pointer;color:#aebbc2;background:0 0;border:0;border-radius:10px;padding:11px 8px;font-size:.83rem;font-weight:700}.nav-button.active,.nav-button:hover{color:#151a20;background:#f1c675}.page{padding-top:32px}.page h1{letter-spacing:-.035em;margin:5px 0 0;font-family:Georgia,serif;font-size:clamp(2rem,8vw,3.25rem);line-height:1}.page h2,.page h3,.page p{overflow-wrap:anywhere}.page h2{margin:0;font-family:Georgia,serif}.home-page{text-align:center;max-width:720px;margin:0 auto;padding-top:10vh}.home-title{color:#f1c675;font-size:clamp(3rem,15vw,6.5rem)!important}.home-subtitle{color:#bcc5c6;max-width:28rem;margin:18px auto 26px;font-size:1.05rem}.home-stats{grid-template-columns:repeat(2,1fr);gap:10px;margin:20px 0 26px;display:grid}.home-stat{background:#1a222b;border:1px solid #2d3944;border-radius:14px;padding:16px 10px}.home-stat strong{color:#f5cb78;font-size:1.65rem;display:block}.home-stat span{color:#93a0a8;font-size:.73rem}.home-actions{gap:10px;max-width:22rem;margin:0 auto;display:grid}.primary-button,.secondary-button{cursor:pointer;letter-spacing:.04em;border:1px solid #0000;border-radius:12px;min-height:48px;padding:12px 18px;font-weight:900}.primary-button{color:#17191b;background:linear-gradient(135deg,#f8d78f,#dfa952);box-shadow:0 8px 22px #dfa9522e}.primary-button:hover{filter:brightness(1.07)}.secondary-button{color:#e4c67e;background:#1a222b;border-color:#5a4a2e}.reset-button{color:#929da3;cursor:pointer;background:0 0;border:0;padding:12px;font-size:.77rem}.reset-button:hover{color:#ef9a8c}.collection-heading,.opening-heading{justify-content:space-between;align-items:flex-end;gap:14px;display:flex}.collection-progress{text-align:right;flex:none}.collection-progress strong{color:#f5cb78;font-family:Georgia,serif;font-size:clamp(1.35rem,6vw,2.25rem);display:block}.collection-progress span{color:#91a2ad;font-size:.72rem}.collection-intro,.opening-hint{color:#aab5ba;margin:16px 0 24px}.collection-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.collection-slot{min-width:0}.pack-stage{align-items:center;gap:28px;max-width:720px;margin:36px auto 0;display:grid}.booster-pack{background:radial-gradient(circle at 50% 24%,#f6d4855e,#0000 22%),linear-gradient(150deg,#1b5670,#242445 56%,#5b344f);border:2px solid #dcae5c;border-radius:20px;place-items:center;min-height:330px;display:grid;position:relative;overflow:hidden;box-shadow:0 24px 60px #00000052,0 0 50px #e0af5b21}.booster-pack:before,.booster-pack:after{content:"";background:#ffffff1f;width:150%;height:15px;position:absolute;transform:rotate(-33deg)}.booster-pack:before{top:28%}.booster-pack:after{top:66%}.booster-glow{border:1px solid #ffffff4d;border-radius:50%;width:185px;height:185px;position:absolute;box-shadow:0 0 0 24px #ffffff0a,0 0 0 48px #ffffff06}.booster-series,.booster-title,.booster-symbol,.booster-subtitle{z-index:1;position:relative}.booster-series{color:#f8dd9f;letter-spacing:.22em;margin-top:-145px;font-weight:900}.booster-title{margin-top:-92px;font-family:Georgia,serif;font-size:3.2rem}.booster-symbol{color:#f5d482;text-shadow:0 0 30px #f5d482;margin-top:15px;font-size:4.8rem}.booster-subtitle{color:#d4e5e8;letter-spacing:.2em;margin-top:110px;font-size:.68rem}.pack-copy{text-align:center}.pack-copy h2{font-size:1.8rem}.pack-copy p{color:#aab5ba}.pack-remaining{font-size:1.02rem}.pack-remaining strong{color:#f5cb78}.open-button{width:min(100%,300px);margin:14px auto 0}.pack-note{font-size:.72rem;color:#71818a!important}.empty-packs{text-align:center;background:#171e26;border:1px dashed #4b5861;border-radius:18px;max-width:34rem;margin:12vh auto;padding:32px 22px}.empty-seal{color:#738692;font-size:3rem}.empty-packs h2{margin-top:12px}.empty-packs p{color:#9caab0;line-height:1.6}.text-button{color:#e4c67e;padding:9px 0}.text-button:hover{color:#fff0c8}.opening-heading{align-items:center}.opening-hint{margin-top:9px}.pack-reveal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.reveal-slot{cursor:pointer;background:0 0;border:0;border-radius:14px;min-width:0;padding:0}.reveal-slot:disabled{cursor:default}.pack-summary{text-align:center;background:linear-gradient(150deg,#27271f,#1d2227);border:1px solid #4f4b3d;border-radius:17px;margin-top:26px;padding:22px 16px}.pack-summary h2{margin-top:6px;font-size:1.8rem}.summary-stats{grid-template-columns:repeat(3,1fr);gap:7px;margin:20px 0;display:grid}.summary-stats div{background:#0000002e;border-radius:9px;padding:10px 4px}.summary-stats strong{color:#f5cb78;font-size:1.3rem;display:block}.summary-stats span{color:#9ba8ad;margin-top:4px;font-size:.65rem;display:block}.progress-change{color:#aebabe;justify-content:center;align-items:center;gap:13px;display:flex}.progress-change strong{color:#f5cb78}.summary-actions{gap:9px;max-width:26rem;margin:20px auto 0;display:grid}.app-footer{justify-content:center;margin-top:28px;display:flex}.app-footer .reset-button{border:1px solid #2d3944;border-radius:9px}.deck-heading,.battle-heading{justify-content:space-between;align-items:flex-end;gap:14px;display:flex}.deck-size{text-align:right;flex:none}.deck-size strong{color:#f5cb78;font-family:Georgia,serif;font-size:clamp(1.45rem,6vw,2.25rem);display:block}.deck-size span{color:#91a2ad;font-size:.72rem}.deck-size.is-valid span{color:#a8d6a5}.legality-message{border-radius:10px;margin-top:16px;padding:12px 14px;font-size:.82rem;line-height:1.4}.legality-message.is-invalid{color:#f4c0b6;background:#6f342e33;border:1px solid #70433e}.legality-message.is-valid{color:#c5e3bf;background:#2c583c2e;border:1px solid #3d664c}.deck-actions{margin:12px 0 30px}.deck-actions .primary-button{width:100%}.primary-button:disabled,.card-control-button:disabled{cursor:not-allowed;opacity:.42;filter:grayscale(.5)}.deck-section{border-top:1px solid #2b3540;margin-top:30px;padding-top:22px}.section-heading{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:14px;display:flex}.section-heading h2{margin-top:5px;font-size:1.55rem}.section-heading>span{color:#8f9ca2;font-size:.72rem}.empty-deck{color:#8998a0;text-align:center;border:1px dashed #4b5861;border-radius:12px;padding:26px}.filter-row{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:16px;display:flex}.filter-button{cursor:pointer;color:#aebbc2;background:#1a222b;border:1px solid #34424e;border-radius:8px;min-height:35px;padding:6px 9px;font-size:.72rem;font-weight:750}.filter-button.active{color:#17191b;background:#f1c675;border-color:#f1c675}.sort-control{color:#abb6ba;align-items:center;gap:5px;margin-left:auto;font-size:.72rem;display:inline-flex}.sort-control input{accent-color:#f1c675}.deck-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.deck-card-entry{min-width:0}.deck-card-controls{padding:8px 0 2px}.deck-counts{color:#aab7bc;gap:3px;margin-bottom:7px;font-size:.65rem;display:grid}.deck-counts span:first-child{color:#e3c981}.card-control-button{cursor:pointer;color:#e4c67e;letter-spacing:.04em;background:#1a222b;border:1px solid #5a4a2e;border-radius:8px;width:100%;min-height:37px;font-size:.62rem;font-weight:900}.card-control-button:hover:not(:disabled){color:#181b1c;background:#f1c675}.card-control-button.remove{color:#b4c0c4;border-color:#4a5963}.card-control-button.remove:hover{color:#17191b;background:#c2d5d5}.battle-heading{align-items:center}.turn-indicator{text-align:right;letter-spacing:.06em;border-radius:9px;gap:3px;padding:8px 10px;font-size:.7rem;font-weight:900;display:grid}.turn-indicator span{color:#a3b0b5;letter-spacing:0;font-size:.62rem;font-weight:600}.player-turn{color:#17221a;background:#a9d39e}.opponent-turn{color:#2d1e20;background:#e4aaa2}.turn-callout{border-radius:10px;justify-content:space-between;align-items:center;gap:10px;margin:16px 0 9px;padding:10px 12px;animation:.5s ease-out turn-pulse;display:flex}.turn-callout strong{letter-spacing:.08em;font-size:.73rem}.turn-callout span{color:#bdc9cb;text-align:right;font-size:.68rem}.your-callout{background:#436c4538;border:1px solid #4a654b}.opponent-callout{background:#6f342e38;border:1px solid #614648}.battle-notice{color:#c2cdd0;background:#171e26;border:1px solid #3a4650;border-radius:10px;min-height:41px;margin:9px 0 12px;padding:11px 13px;font-size:.78rem;line-height:1.35;animation:.45s ease-out notice-pulse}.opponent-action-banner{color:#f0c0b8;align-items:center;gap:8px;margin:0 0 10px;font-size:.72rem;font-weight:800;display:flex}.action-dot{background:#e7a49a;border-radius:50%;width:8px;height:8px;animation:1s ease-in-out infinite action-blink;box-shadow:0 0 0 5px #e7a49a1f}.battle-side-panel{background:#192028db;border:1px solid #3a4650;border-radius:15px;padding:14px 11px 11px}.battle-side-panel.is-busy{box-shadow:0 0 0 2px #e7a49a1f}.opponent-panel{border-color:#614648}.player-panel{border-color:#4a654b}.battle-side-header{grid-template-columns:1fr auto auto;align-items:end;gap:9px;display:grid}.side-label{color:#9caab0;letter-spacing:.12em;text-transform:uppercase;font-size:.63rem;display:block}.battle-side-header strong{color:#f5cb78;font-family:Georgia,serif;font-size:1.45rem}.side-resources,.side-hand-count{text-align:right}.side-resources span,.side-hand-count span{color:#83929a;font-size:.58rem;display:block}.side-resources strong,.side-hand-count strong{color:#cbd5d5;font-family:inherit;font-size:.78rem}.battle-board{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:12px;display:grid}.battle-slot{background:#131a20;border:1px solid #354550;border-radius:9px;min-width:0;min-height:132px;padding:0;position:relative}.empty-slot{color:#596a73;letter-spacing:.1em;place-items:center;font-size:.45rem;display:grid}.occupied-slot{cursor:default;border-color:#0000}:is(.occupied-slot:has(.ready-to-attack),.occupied-slot:has(.targetable-unit)){cursor:pointer}:is(.occupied-slot:hover:has(.ready-to-attack),.occupied-slot:hover:has(.targetable-unit)){border-color:#f1c675}.battle-unit{height:100%;position:relative}.battle-unit.selected-unit{outline-offset:2px;border-radius:10px;outline:2px solid #f1c675}.battle-unit.targetable-unit{outline-offset:2px;border-radius:10px;outline:2px solid #e7b86d}.player-target-button{cursor:pointer;color:#ffd2c9;background:#66312d4d;border:1px solid #8b5953;border-radius:8px;width:100%;min-height:41px;margin-top:9px;font-size:.65rem;font-weight:900}.player-target-button:hover,.player-target-button.targetable{background:#873f3973;box-shadow:0 0 0 2px #f1c6754d}.battle-divider{color:#6f7b80;letter-spacing:.18em;align-items:center;gap:10px;margin:13px 0;font-size:.62rem;display:flex}.battle-divider:before,.battle-divider:after{content:"";background:#2e3942;flex:1;height:1px}.hand-section{margin-top:25px}.hand-section .section-heading>span{color:#e3c981}.battle-hand{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.hand-card{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;min-width:0;padding:0 0 25px;transition:transform .2s,opacity .2s;position:relative}.hand-card.tutorial-focus,.tutorial-focus{z-index:4;animation:1.2s ease-in-out infinite focus-pulse;position:relative}.card-playability{color:#dfaaa2;text-align:center;background:#70342e42;border-radius:5px;min-height:21px;margin-top:4px;padding:4px 5px;font-size:.57rem;line-height:1.2;display:block}.card-playability.is-playable{color:#cce8c6;background:#436c4540}.battle-log{background:#151c23;border:1px solid #34414b;border-radius:11px;margin:12px 0 20px}.battle-log summary{cursor:pointer;color:#d8c18a;justify-content:space-between;gap:8px;padding:11px 13px;font-size:.73rem;font-weight:850;display:flex}.battle-log summary span{color:#839198;font-weight:600}.battle-log ol{color:#bcc8c9;margin:0;padding:0 18px 12px 32px;font-size:.68rem;line-height:1.45}.battle-log li{padding:3px 0}.battle-controls{grid-template-columns:1fr;gap:9px;margin:22px 0;display:grid}.how-to-play-button,.end-turn-button{width:100%}.battle-result{text-align:center;background:radial-gradient(circle at 50% 0,#efc26b2b,#0000 40%),#24221d;border:1px solid #c39b53;border-radius:17px;margin-top:22px;padding:28px 18px}.battle-result h2{color:#f5cb78;letter-spacing:.04em;margin-top:8px;font-family:Georgia,serif;font-size:clamp(2.6rem,14vw,5rem)}.battle-result p:not(.eyebrow){color:#bbc4c4}.battle-result .summary-actions{max-width:28rem}.battle-summary-stats{margin:18px 0 0}.tutorial-overlay{z-index:20;background:#070a0eb8;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.tutorial-card{background:linear-gradient(150deg,#272923,#1b2024);border:1px solid #b18c4a;border-radius:16px;width:min(100%,360px);padding:23px 20px 20px;box-shadow:0 20px 60px #00000075}.tutorial-card h2{color:#f5cb78;margin:8px 0 10px;font-family:Georgia,serif;font-size:1.8rem}.tutorial-card p:not(.eyebrow){color:#c5cece;line-height:1.55}.tutorial-card .primary-button{width:100%;margin-top:12px}.tutorial-banner,.context-hint{z-index:12;background:#26241cf7;border:1px solid #b18c4a;border-radius:11px;gap:4px;width:min(100% - 28px,440px);padding:12px 14px;display:grid;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 10px 35px #0000004d}.tutorial-banner{bottom:20px}.context-hint{width:min(100% - 28px,360px);bottom:20px;left:auto;right:14px;transform:none}.tutorial-banner strong,.context-hint strong{color:#f5cb78;font-size:.78rem}.tutorial-banner span,.context-hint span{color:#c7d0cf;font-size:.7rem;line-height:1.4}.context-hint .text-button{justify-self:start;padding:4px 0}@keyframes turn-pulse{0%{opacity:.35;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}@keyframes notice-pulse{0%{transform:scale(.99)}to{transform:scale(1)}}@keyframes action-blink{50%{opacity:.35}}@keyframes focus-pulse{50%{filter:drop-shadow(0 0 11px #f5cb78cc)}}@keyframes unit-arrive{0%{opacity:.3;transform:translateY(-7px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.tutorial-target{z-index:3;position:relative;box-shadow:0 0 0 3px #f5cb78a3,0 0 26px #f5cb783d}.battle-unit{animation:.45s ease-out unit-arrive}.tutorial-backdrop,.tutorial-action-dim{z-index:10;background:#05080cad;position:fixed;inset:0}.tutorial-backdrop{pointer-events:auto}.tutorial-action-dim{pointer-events:none;background:#05080c73}.tutorial-spotlight,.tutorial-action-target{z-index:11;outline-offset:4px;border-radius:9px;outline:3px solid #f5cb78;position:relative;box-shadow:0 0 0 5px #f5cb7829,0 0 28px #f5cb787a}.side-hp,.side-resources,.hand-section,.end-turn-tutorial-target{position:relative}.tutorial-bubble{z-index:12;color:#d3dddd;text-align:left;background:#25261f;border:1px solid #d6af61;border-radius:10px;gap:5px;width:min(280px,100vw - 36px);padding:12px 13px;font-size:.73rem;line-height:1.4;display:grid;position:absolute;box-shadow:0 12px 30px #0006}.tutorial-bubble strong{color:#f7d58d;font-size:.8rem}.tutorial-bubble .text-button{justify-self:start;padding:4px 0}.side-hp .tutorial-bubble,.hand-section>.tutorial-bubble{top:calc(100% + 12px);left:0}.side-resources .tutorial-bubble{top:calc(100% + 12px);right:0}.tutorial-bubble-action{z-index:11;width:100%;margin:0 0 10px;position:relative}.end-turn-tutorial-target .tutorial-bubble-action{width:min(300px,100vw - 36px);position:absolute;bottom:calc(100% + 12px);right:0}.end-turn-tutorial-target,.end-turn-tutorial-target .end-turn-button{width:100%}.header-coins{text-align:right;color:#aebdc0;min-width:48px;font-size:.68rem}.header-coins strong{color:#f5cb78;font-size:1rem;display:block}.page-back{margin-bottom:9px}.town-heading,.shop-heading{justify-content:space-between;align-items:end;gap:12px;display:flex}.town-mini-stats,.coin-balance{text-align:right}.town-mini-stats strong,.coin-balance strong{color:#f5cb78;font-family:Georgia,serif;font-size:1.5rem;display:block}.town-mini-stats span,.coin-balance span{color:#8d9aa0;font-size:.67rem}.main-objective{background:linear-gradient(115deg,#6c522342,#1d262cd1);border:1px solid #806a3d;border-radius:12px;align-items:center;gap:11px;margin:20px 0 16px;padding:12px 14px;display:flex}.main-objective p{margin:0 0 3px}.main-objective strong{color:#f2dfae;font-size:.82rem;line-height:1.35}.objective-icon{color:#171a1d;background:#f5cb78;border-radius:50%;flex:none;place-items:center;width:26px;height:26px;font-weight:950;display:grid}.town-map{background:radial-gradient(circle at 18% 12%,#79b7984f,#0000 32%),radial-gradient(circle at 82% 82%,#d9b06530,#0000 29%),linear-gradient(150deg,#254654,#263d36 47%,#3d3730);border:1px solid #3e5661;border-radius:20px;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;min-height:440px;padding:16px;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 70px #050c1042,0 16px 34px #0000002e}.town-map:after{content:"青叶镇";z-index:0;color:#ebdeb138;letter-spacing:.14em;white-space:nowrap;font-family:Georgia,serif;font-size:clamp(2rem,10vw,4rem);position:absolute;top:48%;left:50%;transform:translate(-50%,-50%)rotate(-8deg)}.map-sky{opacity:.45;background:linear-gradient(#abd8e03d,#0000);position:absolute;inset:0 0 55%}.map-path{z-index:0;border:4px solid #efd39b54;border-radius:50%;height:19px;position:absolute;transform:rotate(-17deg)}.map-path-one{width:79%;top:43%;left:-8%}.map-path-two{width:74%;top:53%;right:-13%;transform:rotate(24deg)}.town-location{z-index:1;color:#edf0e7;cursor:pointer;background:linear-gradient(155deg,#2c4546f0,#1b2629eb);border:1px solid #6e8f8a;border-radius:15px;align-content:center;justify-items:center;gap:4px;min-height:124px;padding:9px 5px;transition:transform .18s,border-color .18s,box-shadow .18s;display:grid;position:relative}.town-location:hover:not(:disabled){border-color:#f5cb78;transform:translateY(-3px);box-shadow:0 0 0 3px #f5cb7821,0 12px 22px #00000029}.town-location:disabled{cursor:not-allowed;opacity:.62;filter:saturate(.42)}.location-icon{color:#f4cf83;filter:drop-shadow(0 4px 5px #0000004d);font-size:2rem}.location-name{font-family:Georgia,serif;font-size:1rem}.location-english,.location-lock-copy{color:#b6c5c2;letter-spacing:.09em;font-size:.48rem}.location-main,.location-complete{color:#192018;letter-spacing:.06em;background:#f5cb78;border-radius:4px;padding:3px 5px;font-size:.48rem;font-weight:950;position:absolute;top:7px;right:7px}.location-complete{color:#142419;background:#a7d49b;font-size:.68rem}.town-location.is-objective{border-color:#f5cb78;box-shadow:0 0 0 3px #f5cb7829,0 0 25px #f5cb7829}.town-location.is-completed{border-color:#78ae79}.town-hint{color:#98a7a6;text-align:center;margin:13px 4px 0;font-size:.74rem}.opening-story{z-index:30;background:#05090db8;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.opening-story-card{background:radial-gradient(circle at 85% 0,#f0c46a2b,#0000 38%),#20272b;border:1px solid #bc9550;border-radius:17px;width:min(100%,410px);padding:25px 21px 20px;box-shadow:0 22px 70px #0000008c}.opening-story-card h2{color:#f4d78e;margin:9px 0 13px;font-family:Georgia,serif;font-size:1.7rem;line-height:1.16}.opening-story-card p{color:#c2ccca;line-height:1.6}.opening-story-card .story-note{color:#dfc989;background:#0000002e;border-radius:8px;padding:10px 11px;font-size:.75rem}.opening-story-card .primary-button{width:100%;margin-top:7px}.location-page{max-width:680px;margin:0 auto}.location-copy{color:#b5c0c0;line-height:1.55}.home-location-stats,.ending-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:22px 0;display:grid}.home-location-stats div,.ending-stats div{background:#1a222bd1;border:1px solid #344650;border-radius:11px;padding:13px 10px}.home-location-stats strong,.ending-stats strong{color:#f5cb78;font-family:Georgia,serif;font-size:1.35rem;display:block}.home-location-stats span,.ending-stats span{color:#94a2a8;margin-top:3px;font-size:.65rem;display:block}.home-objective{color:#ead8a4;background:#46391e2e;border-left:3px solid #d4aa58;padding:12px;font-size:.82rem}.shop-booster{background:radial-gradient(circle at 12% 5%,#f1c36321,#0000 32%),#1d252c;border:1px solid #66502f;border-radius:16px;gap:17px;margin-top:24px;padding:18px;display:grid}.shop-booster h2{margin-top:4px;font-size:1.45rem}.shop-booster p{color:#b3c0c1;font-size:.82rem}.shop-booster-mark{color:#f4d58c;background:linear-gradient(145deg,#1f5668,#262341 65%,#57354e);border:1px solid #b7904c;border-radius:12px;place-items:center;min-height:126px;display:grid}.shop-booster-mark span{text-shadow:0 0 20px #f6d27fb3;font-size:3rem}.shop-booster-mark strong{letter-spacing:.12em}.shop-booster-mark small{letter-spacing:.12em;margin-top:6px;font-size:.53rem}.shop-price strong{color:#f5cb78}.shop-actions{align-content:center;gap:8px;display:grid}.shop-actions>span{color:#aebbbc;font-size:.71rem}.shop-actions .primary-button,.shop-actions .secondary-button{width:100%}.shop-notice{color:#d2e0bf;background:#30513438;border:1px solid #53664c;border-radius:9px;margin:12px 0;padding:10px 12px;font-size:.78rem}.shop-duelist{background:linear-gradient(135deg,#1e3c459e,#1d2129e0);border:1px solid #3e5965;border-radius:15px;gap:14px;margin-top:26px;padding:18px;display:grid}.shop-duelist h2{margin-top:4px}.shop-duelist p{color:#bdc8c8}.npc-identity{font-size:.78rem;color:#9fc7d3!important}.npc-list{gap:13px;margin-top:24px;display:grid}.npc-card{background:#1c252d;border:1px solid #3c4c56;border-radius:15px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:13px;padding:16px;display:grid}.npc-card.unlocked{border-color:#637e79}.npc-card h2{margin:4px 0;font-size:1.3rem}.npc-card p{color:#bec9c8;margin:6px 0;font-size:.8rem}.npc-card span{color:#e0c47c;font-size:.7rem}.npc-card .primary-button{grid-column:1/-1;width:100%}.npc-token,.npc-large-token{color:#f3d585;background:#293036;border:1px solid #ad8d54;border-radius:50%;place-items:center;width:48px;height:48px;font-size:1.7rem;display:grid}.npc-large-token{width:76px;height:76px;font-size:2.8rem}.locked-copy{color:#aeb7b8;background:#00000029;border:1px dashed #5c6369;border-radius:10px;padding:13px;font-size:.8rem}.npc-hero{align-items:center;gap:15px;margin-top:14px;display:flex}.npc-hero h2{color:#d9e2df;margin-top:4px;font-size:1rem}.npc-dialogue{background:#5d482029;border-left:3px solid #c4a15e;margin:22px 0;padding:15px}.npc-dialogue p{color:#d7dfdc;margin:5px 0;line-height:1.45}.challenge-details{gap:8px;display:grid}.challenge-details div{background:#192128;border:1px solid #33424c;border-radius:9px;justify-content:space-between;gap:10px;padding:10px 11px;font-size:.75rem;display:flex}.challenge-details span{color:#91a1a7}.challenge-details strong{color:#e4d19b;text-align:right}.challenge-actions{gap:9px;margin-top:22px;display:grid}.challenge-actions .primary-button,.challenge-actions .secondary-button{width:100%}.station-page{text-align:center;max-width:680px;margin:0 auto;padding-top:12vh}.station-page h1{color:#f4d78e;line-height:1.14}.station-copy{color:#c4cfcd;max-width:30rem;margin:18px auto;line-height:1.6}.locked-station{padding:14vh 20px}.ending-panel{background:radial-gradient(circle at 50% 0,#f4cb782e,#0000 39%),#25241e;border:1px solid #ba9450;border-radius:16px;max-width:480px;margin:28px auto 0;padding:21px 16px}.seal-count{color:#d3bf86}.seal-count strong{color:#f5cb78}.ending-panel .primary-button{justify-content:center;align-items:center;width:min(100%,300px);margin-top:7px;display:inline-flex}.ending-continue-link{text-decoration:none}.battle-reward{color:#d9e3c7;background:#4d452340;border:1px solid #685a35;border-radius:9px;gap:5px;margin:17px auto 0;padding:11px;display:grid}.battle-reward strong{color:#f5cb78;font-size:1.1rem}.battle-reward span{color:#c9d8c4;letter-spacing:.06em;font-size:.68rem;font-weight:800}@media (width>=640px){.app-shell{padding-left:28px;padding-right:28px}.collection-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.pack-stage{text-align:left;grid-template-columns:minmax(260px,340px) 1fr}.pack-copy{text-align:left}.open-button{margin-left:0}.pack-reveal-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.summary-actions{grid-template-columns:1fr 1fr}.deck-card-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.battle-hand{grid-template-columns:repeat(5,minmax(0,1fr))}.battle-controls{justify-content:flex-end;display:flex}.battle-controls button{min-width:160px}.battle-slot{min-height:174px}.tutorial-banner{bottom:28px}.town-map{grid-template-columns:repeat(5,minmax(0,1fr));align-items:center;min-height:350px}.town-location{min-height:156px}.shop-booster{grid-template-columns:190px 1fr 170px;align-items:center}.shop-duelist{grid-template-columns:1fr 190px;align-items:center}.npc-card{grid-template-columns:auto minmax(0,1fr) 140px}.npc-card .primary-button{grid-column:auto}.home-location-stats,.ending-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}button,a{touch-action:manipulation}.app-shell{padding-bottom:calc(48px + env(safe-area-inset-bottom))}.collection-progress span{max-width:10rem;line-height:1.3;display:block}.collection-intro{max-width:38rem;line-height:1.55}.pack-summary-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.collection-summary-copy{color:#c7d4d3;letter-spacing:.04em;margin:0;font-size:.72rem;font-weight:800;line-height:1.5}.hand-card.playable-card .card-playability:before{content:"● ";font-size:.55rem}.battle-page.is-targeting .battle-notice{color:#f6df9f;border-color:#d4a954;box-shadow:0 0 0 2px #f1c67524}.battle-tip{color:#98aab0;margin:-2px 2px 13px;font-size:.68rem;line-height:1.45}.battle-tip strong{color:#d9bf79;letter-spacing:.08em}.battle-result{box-shadow:0 18px 42px #00000042}.battle-result .summary-actions{margin-top:18px}.battle-reward{border-color:#9b7d3d}.battle-reward span{display:block}.seal-reward{background:radial-gradient(circle at 50% 0,#f5cb782e,#0000 65%),#43371d6b;border:1px solid #d3ae60;border-radius:12px;gap:5px;margin:16px auto 0;padding:16px 13px;display:grid}.seal-reward strong{color:#f5d37f;letter-spacing:.08em;font-family:Georgia,serif;font-size:1.32rem}.seal-reward span{color:#d1e5c7;font-size:.78rem;font-weight:900}.seal-reward p{color:#d9dfd6;margin:0;font-size:.76rem}.booster-nudge{color:#aebcc1;background:#151d238c;border:1px solid #3e4c57;border-radius:9px;gap:5px;margin:15px auto 0;padding:10px 12px;font-size:.72rem;display:grid}.booster-nudge strong{color:#d9c17a}.booster-nudge.can-afford{background:#3650303d;border-color:#697c56}.booster-nudge.can-afford>strong{color:#cbe6bd;letter-spacing:.05em}.main-objective{box-shadow:0 8px 22px #0000001f}.town-location.is-objective{transform:translateY(-2px)}.town-location.is-objective .location-main{padding:5px 7px;font-size:.55rem}.town-location.is-completed .location-complete:after{content:" DEFEATED";vertical-align:middle;font-size:.43rem}.npc-card.unlocked:has(.primary-button:not(:disabled)){border-color:#617c78}.champion-challenge .npc-hero{background:radial-gradient(circle at 92% 10%,#f5cb7829,#0000 42%),#3a2f1c4d;border:1px solid #a98042;border-radius:15px;padding:15px}.champion-challenge .npc-large-token{border-color:#e0ba6c;box-shadow:0 0 0 4px #f5cb781a}@media (width>=640px){.pack-summary-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width<=430px){.app-shell{padding-left:13px;padding-right:13px}.app-header{gap:9px}.brand-title{font-size:1.16rem}.brand-kicker{font-size:.56rem}.header-progress strong,.header-coins strong{font-size:.9rem}.battle-side-header{gap:6px}.battle-side-header strong{font-size:1.26rem}.battle-side-panel{padding-left:8px;padding-right:8px}.battle-board{gap:5px}.battle-controls,.summary-actions{padding-bottom:env(safe-area-inset-bottom)}}.attack-direction-overlay{z-index:18;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0;overflow:visible}.attack-direction-line{stroke:#f6cf78;stroke-width:4px;stroke-linecap:round;filter:drop-shadow(0 0 5px #f6cf78d9);animation:.38s ease-out both attack-line-in}.attack-direction-overlay marker path{fill:#f6cf78}.battle-unit.is-attacking{z-index:4;outline-offset:3px;border-radius:11px;outline:3px solid #f6cf78;transform:translateY(-5px);box-shadow:0 0 0 5px #f6cf7829,0 12px 22px #00000047}.battle-unit.is-targeted,.side-hp.targeted-player{z-index:4;outline-offset:3px;border-radius:10px;outline:3px solid #e89183;box-shadow:0 0 0 5px #e8918329,0 0 18px #e891833d}.attack-state-badge{z-index:5;letter-spacing:.06em;border-radius:5px;padding:3px 5px;font-size:.48rem;font-weight:950;line-height:1;position:absolute;top:5px;right:5px}.attacking-state{color:#201709;background:#f6cf78}.targeted-state{color:#291315;background:#f0aaa1}.side-hp .attack-state-badge{white-space:nowrap;top:calc(100% + 5px);right:0}.pack-summary-help{text-align:left;gap:5px;max-width:30rem;margin:13px auto 0;display:grid}.pack-summary-help p{color:#b9cdcf;background:#85bcca17;border-left:2px solid #9acbd8;border-radius:5px;margin:0;padding:8px 9px;font-size:.69rem;line-height:1.45}@keyframes attack-line-in{0%{opacity:0;stroke-dasharray:12 7}to{opacity:1;stroke-dasharray:1 0}}@media (width<=430px){.attack-direction-line{stroke-width:3.5px}.attack-state-badge{font-size:.44rem}.pack-summary-help p{font-size:.66rem}}.card-face{color:#171717;text-align:left;overflow-wrap:anywhere;background:#fafafa;border:2px solid #777;border-radius:4px;flex-direction:column;gap:10px;min-width:0;padding:12px;font-family:system-ui,-apple-system,sans-serif;line-height:1.5;display:flex}.cf-heading{align-items:flex-start;gap:10px;display:flex}.card-face .cf-heading h3{margin:0;font:700 18px/1.4 system-ui,sans-serif}.cf-cost{background:#eee;border:1px solid #333;flex-direction:column;flex:0 0 40px;align-items:center;display:flex}.cf-cost small{font-size:11px}.cf-cost strong{font-size:24px;line-height:1.2}.cf-type{border-bottom:1px solid #777;padding-bottom:4px;font-size:14px;font-weight:750}.cf-stats{grid-template-columns:1fr 1fr;gap:4px;display:grid}.cf-stats>span{background:#eee;border:1px solid #777;flex-direction:column;align-items:center;display:flex}.cf-stats small{font-size:11px}.cf-stats strong{font-size:22px;line-height:1.3}.cf-art{color:#555;background:#e5e5e5;border:1px solid #aaa;place-items:center;height:96px;font-size:12px;display:grid}.cf-rules{min-width:0}.cf-rules-label{font-size:12px;display:block}.cf-rules p{white-space:pre-line;margin:6px 0 0;font-size:16px;line-height:1.65}.card-kind-spell .cf-rules{border:1px dashed #666;padding:8px}.card-kind-equipment .cf-type{border-bottom:4px double #555}.card-kind-equipment .cf-rules{border-left:4px double #555;padding-left:8px}.cf-meta{color:#555;border-top:1px solid #aaa;flex-direction:column;gap:3px;margin-top:auto;padding-top:8px;font-size:12px;display:flex}.cf-collection-state{flex-wrap:wrap;gap:5px;display:flex}.cf-collection-state>span{border:1px solid #777;padding:1px 4px}.cf-states{flex-wrap:wrap;gap:4px;display:flex}.cf-states span{border:1px solid #444;padding:2px 5px;font-size:12px;font-weight:700}.card-face[data-card-state~=playable]{border-color:#111}.card-face[data-card-state~=playable] .cf-states span:first-child{color:#fff;background:#222}.card-face[data-card-state~=unplayable]{background:#eee;border-style:dashed}.card-face[data-card-state~=selected]{outline-offset:2px;outline:3px solid #333}.card-face[data-card-state~=attacking]{border-top:6px solid #111}.card-face[data-card-state~=targeted]{outline-offset:2px;outline:3px dashed #222}.card-face[data-card-state~=targetable]{border-style:dashed}.card-face[data-card-state~=exhausted] .cf-states{border-bottom:2px dotted #555;padding-bottom:4px}.cf-equipment,.cf-status-text{margin:0;font-size:12px;line-height:1.5}.card-size-large{min-height:410px}.card-size-medium{gap:8px;min-height:340px;padding:10px}.card-size-medium .cf-heading h3{font-size:16px}.card-size-medium .cf-art{height:56px}.card-size-medium .cf-rules p{font-size:14px;line-height:1.6}.card-size-small{gap:6px;min-height:205px;padding:8px}.card-size-small .cf-heading{gap:6px}.card-size-small .cf-heading h3{font-size:14px}.card-size-small .cf-cost{flex-basis:30px}.card-size-small .cf-cost strong{font-size:20px}.card-size-small .cf-type{font-size:13px}.card-size-small .cf-stats strong{font-size:20px}.card-size-small .cf-art{height:24px;margin-top:auto;font-size:10px}.card-size-small .cf-rules-label{font-size:12px}.card-concealed{background:#eee;border-style:dashed;justify-content:center;align-items:center;gap:24px}.card-concealed>strong{font-size:28px}.card-inspect-button{color:#222;cursor:pointer;background:#eee;border:1px solid #777;border-radius:3px;width:100%;min-height:44px;padding:8px;font-size:14px}.card-detail-dialog{background:#ddd;border:2px solid #555;width:min(380px,100vw - 24px);max-height:calc(100dvh - 32px);padding:12px;overflow-y:auto}.card-detail-dialog::backdrop{background:#0009}.card-detail-dialog form{margin-bottom:10px}.card-detail-dialog .card-size-large{min-height:0}.card-face:focus-visible,.card-inspect-button:focus-visible{outline-offset:2px;outline:3px solid #666}.collection-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:16px}.deck-card-grid,.pack-reveal-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:14px}.collection-slot>.card-face,.deck-card-entry>.card-face,.reveal-slot>.card-face{height:100%}.deck-card-entry{flex-direction:column;display:flex}.deck-card-entry>.card-face{flex:1}.reveal-slot{border-radius:4px;align-self:stretch}.reveal-slot:not(:disabled):hover{transform:none}.battle-hand{grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr));gap:12px}.hand-card-entry,.board-card-entry{flex-direction:column;gap:5px;min-width:0;display:flex}.hand-card{flex-direction:column;flex:1;width:100%;padding:0;transition:none;display:flex}.hand-card>.card-face{flex:1;width:100%}.hand-card:hover{transform:none}.hand-card.unavailable-card{opacity:1;filter:none}.card-playability,.card-playability.is-playable{color:#eee;background:#333;width:100%;font-size:12px;line-height:1.5}.hand-card.playable-card .card-playability:before{content:none}.battle-slot.occupied-slot{text-align:left;flex:1;width:100%}.battle-unit,.battle-unit .card-face{height:100%}.battle-unit,.hand-card.tutorial-focus{animation:none}.battle-unit.selected-unit,.battle-unit.targetable-unit,.battle-unit.is-attacking,.battle-unit.is-targeted{box-shadow:none;outline:none;transform:none}.board-card-entry .cf-heading{flex-wrap:wrap}.board-card-entry .cf-heading h3{width:100%}.board-card-entry .cf-stats small{font-size:10px}.board-card-entry .card-size-small{padding:5px}.board-card-entry .cf-states span{padding:1px 2px;font-size:11px}.card-lab{color:#222;background:#eee;max-width:1120px;margin:auto;padding:20px 14px 48px;font-family:system-ui,sans-serif}.card-lab h1{font-size:26px}.card-lab h2{font-size:20px}.card-lab a{color:#333}.card-lab section{margin-top:28px}.card-lab-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));align-items:start;gap:18px;display:grid}.card-lab-grid>div{min-width:0}.card-lab-small{grid-template-columns:repeat(auto-fit,minmax(155px,1fr))}.card-lab-case{margin:0 0 8px;font-size:13px}.card-lab .cf-rules{margin-top:0}
