/* Mission book: visible choices and a small, legible three-star goal. */
.home-star-note{font-size:12px;color:#d6cc99;margin:0 0 16px}.home-star-note b{font:20px Georgia,serif;color:#f5d78d}
.journey.mission-menu{padding:34px 5%;display:flex;flex-direction:column;gap:16px;justify-content:center}
.mission-board-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.mission-board-head .section-title{margin:8px 0 0}.star-total{font:26px Georgia,serif;color:#f3d390;white-space:nowrap}.star-total span{font-size:20px}.star-total small{color:#a8b594;font-size:14px}
.mission-menu .chapter-tabs{margin:0;gap:8px}.mission-menu .chapter-tabs button{min-height:40px;padding:8px 14px}.mission-chapter-story{font-size:13px;line-height:1.8;color:#b4c4a8;max-width:700px;margin:0}
.mission-board{display:grid;grid-template-columns:minmax(270px,1fr) minmax(280px,1fr);gap:28px;align-items:start}.mission-list{display:flex;flex-direction:column;gap:9px}.mission-card{display:flex;align-items:center;gap:14px;min-height:79px;width:100%;padding:13px 17px;text-align:left;border:1px solid #9dbb8b45;border-radius:9px;background:#0a241fce;color:#e2e5c8;box-shadow:0 3px 12px #0001}.mission-card:hover{background:#244b37;border-color:#c4d0a875}.mission-card.selected{border-color:#ddca85;background:linear-gradient(110deg,#355440ed,#163c30ed);box-shadow:inset 3px 0 #dcc98d}.mission-card.locked{opacity:.48}.mission-card.locked.selected{opacity:.8}.mission-number{display:grid;place-items:center;width:36px;height:36px;flex-shrink:0;border:1px solid #b7c29944;border-radius:50%;font:17px Georgia,serif;color:#d9cca2}.locked .mission-number{font:12px inherit}.mission-card-copy{flex:1;min-width:0}.mission-card-copy b{display:block;font-size:16px;font-weight:600;letter-spacing:1px}.mission-card-copy small{display:block;font-size:11px;line-height:1.6;color:#9bb595;margin-top:5px}
.mission-stars{display:inline-flex;gap:3px;flex-shrink:0;color:#62705a;font:20px Georgia,serif;letter-spacing:0}.mission-stars .earned{color:#f0cd7d;text-shadow:0 1px 7px #dbb85433}
.mission-detail{background:linear-gradient(160deg,#183c31ee,#0a241ef5);border:1px solid #b2c79538;border-radius:12px;padding:20px 28px;position:relative;text-align:center;min-height:395px}.mission-enemy{width:155px;height:155px;margin:-12px auto -4px;filter:drop-shadow(0 10px 8px #0004)}.mission-detail .chapter{font-size:10px}.mission-detail h2{font:29px Wuxia,serif;color:#f0dfb3;letter-spacing:2px;margin:12px 0}.mission-detail>p{font-size:13px;line-height:1.85;color:#bccbac;margin:10px auto;max-width:390px}.mission-detail-stars{display:flex;align-items:center;justify-content:center;gap:14px;margin:15px 0}.mission-detail-stars>span:last-child{font-size:11px;color:#91ab8d}.mission-goal{display:flex;justify-content:center;gap:10px;align-items:center;font-size:12px;padding:12px 0;border-top:1px solid #9ab18a24}.mission-goal span{color:#849f80;font-size:10px}.mission-goal b{font-weight:400;color:#c8d6b3}.mission-detail .primary{display:block;width:100%;min-height:48px;margin-top:10px}.mission-detail .text-link{font-size:11px;margin:12px 0 0}.mission-lock-note{padding:14px;border:1px dashed #b9c68f44;border-radius:6px}
.mission-board-foot{display:flex;justify-content:space-between;gap:15px;align-items:center}.mission-board-foot span{font-size:11px;color:#91aa88}.mission-board-foot .text-link{margin:0}
.mission-result .result-stars{font-size:62px;gap:15px;margin:20px 0 10px}.result-stars .earned{animation:star-arrive .5s cubic-bezier(.15,.85,.3,1.3) both;animation-delay:calc(var(--star-order)*.16s)}.star-result-note{font-size:12px;color:#e1cb8b;margin:4px 0 20px}.mission-result .result-actions{margin-top:25px}.mission-result>.text-link{font-size:11px}.mission-result h1{font-size:36px}
/* Drawn frames carry the pose; transforms add weight, breath, travel and recoil. */
.battle .hero-actor,.battle .enemy-actor{animation:none!important;transform:none!important}.battle .sprite-art{will-change:transform;background-blend-mode:normal;transform-origin:50% 94%}.battle .story-actors{max-width:960px;width:100%;margin: auto auto 0;padding:0 7%;gap:24px;justify-content:space-between}.battle .actor-wrap::after{content:'';position:absolute;left:25%;right:25%;bottom:2%;height:10px;border-radius:50%;background:#0005;filter:blur(5px);z-index:-1}.enemy-intent{position:absolute;left:15%;right:15%;top:-6px;font-size:11px;letter-spacing:3px;text-align:center;color:#f3d3a0;opacity:0;transition:opacity .2s}.battle[data-intent="windup"] .enemy-intent,.battle[data-intent="attack"] .enemy-intent,.battle[data-intent="guard"] .enemy-intent{opacity:1}.battle[data-intent="windup"] .enemy-actor::before,.battle[data-intent="guard"] .enemy-actor::before{content:'';position:absolute;inset:30% 14% 4%;border:1px solid #e8b77866;border-radius:50%;background:radial-gradient(ellipse,#e9c68d0c,transparent);animation:intent-breath 1.1s ease-in-out infinite;pointer-events:none}.battle[data-intent="attack"] .enemy-intent{color:#ffb79a}.battle .actor-caption{color:#b7ca9f;letter-spacing:2px}.battle .combat-fx{position:absolute;pointer-events:none;z-index:8;animation-fill-mode:both}.battle-wave{width:105px;height:5px;border-radius:50%;background:#edffd6;box-shadow:0 0 10px 3px #c1edb799,0 -5px 0 -1px #e6f2be77;animation:wave-flight .09s ease-out both}.battle-wave.hostile{background:#e9b68f;box-shadow:0 0 12px 3px #e6ae7280}.battle[data-enemy-tone="ink"] .battle-wave.hostile{background:#c4b0d6;box-shadow:0 0 13px #9c85ab}.battle[data-enemy-tone="wind"] .battle-wave.hostile{background:#d8f0dc;box-shadow:0 0 12px #bee2cd}.impact-ring{width:60px;height:60px;border:2px solid #e5f1ba;border-radius:50%;box-shadow:0 0 20px #e7f3b866;animation:impact-ring .42s ease-out both}.impact-ring.finishing-hit{width:100px;height:100px;border-width:3px}.impact-ring i{position:absolute;left:50%;top:50%;width:5px;height:5px;background:#f1f5c6;border-radius:50%;animation:impact-spark .4s ease-out both}.impact-ring.hurt-hit{border-color:#efa68d;box-shadow:0 0 18px #c45b4433}.impact-ring.hurt-hit i{background:#efb58a}.impact-ring.shield-hit{border-color:#afe7dd;box-shadow:0 0 30px #9bdfcc77}.impact-ring.shield-hit i{background:#c6f9e5}.practice-ripple{width:50px;height:75px;border:2px solid #d6c59688;border-left-color:transparent;border-radius:50%;animation:practice-ripple .5s ease-out both}.battle[data-victory="true"] .hero-actor::before{content:'';position:absolute;inset:8% 0 0;background:radial-gradient(ellipse at 50% 80%,#d3e3a526,transparent 60%);animation:star-arrive .5s ease-out}.battle[data-paused="true"] *,.battle[data-paused="true"] *::before{animation-play-state:paused!important}
@keyframes star-arrive{from{opacity:0;transform:translateY(12px) scale(.55)}to{opacity:1;transform:none}}
@keyframes wave-flight{0%{opacity:0;transform:translate(-50%,-50%) rotate(var(--wave-angle)) scaleX(.25)}30%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--travel-x)),calc(-50% + var(--travel-y))) rotate(var(--wave-angle)) scaleX(1.1)}}
@keyframes impact-ring{0%{opacity:1;transform:translate(-50%,-50%) scale(.3)}70%{opacity:.7}100%{opacity:0;transform:translate(-50%,-50%) scale(1.4)}}
@keyframes impact-spark{from{opacity:1;transform:translate(-50%,-50%)}to{opacity:0;transform:translate(var(--spark-x),var(--spark-y)) scale(.2)}}
@keyframes intent-breath{50%{opacity:.45;transform:scale(1.06)}}
@keyframes practice-ripple{from{opacity:.7;transform:translate(-50%,-50%) scale(.5)}to{opacity:0;transform:translate(-95%,-50%) scale(1.7)}}
@media(max-width:700px){.journey.mission-menu{padding:25px 18px;gap:14px}.mission-menu .chapter-tabs{gap:5px}.mission-menu .chapter-tabs button{font-size:11px;min-height:38px;padding:7px 9px}.mission-board{grid-template-columns:1fr;gap:18px}.mission-board-head .section-title{font-size:27px}.star-total{font-size:22px}.star-total small{font-size:12px}.mission-card{min-height:73px;padding:12px;gap:10px}.mission-card-copy b{font-size:15px}.mission-card-copy small{font-size:10px}.mission-card .mission-stars{font-size:18px;gap:1px}.mission-number{width:30px;height:30px;font-size:15px}.mission-detail{padding:18px;min-height:0}.mission-enemy{width:135px;height:135px}.mission-detail h2{font-size:26px}.mission-detail>p{font-size:13px}.mission-board-foot{align-items:flex-start}.mission-board-foot span{font-size:10px;max-width:160px;text-align:right;line-height:1.8}.mission-result .result-stars{font-size:48px;gap:12px}.mission-result h1{font-size:30px}.battle .story-actors{padding:0;gap:0;min-height:205px}.battle .actor-wrap{width:145px;height:145px}.enemy-intent{font-size:10px;letter-spacing:1px;top:-8px}.battle-wave{width:65px}.impact-ring{width:42px;height:42px}.impact-ring.finishing-hit{width:68px;height:68px}}
@media(prefers-reduced-motion:reduce){.result-stars .earned,.battle .combat-fx,.battle .enemy-actor::before{animation:none!important}.battle .battle-wave{display:none}.impact-ring{transform:translate(-50%,-50%)}}
body.reduced .result-stars .earned,body.reduced .battle .combat-fx,body.reduced .battle .enemy-actor::before{animation:none!important}body.reduced .battle-wave{display:none}body.reduced .impact-ring{transform:translate(-50%,-50%)}

.battle-wave.hostile{animation-duration:.08s}.mission-detail:focus{outline:none}.mission-detail{scroll-margin-top:16px}
