/* Pastel v2: full-body cast, legible controls, bounded action feedback. */
:root{--muted:#806b75}
.store-top .chapter,.stock-note,.pvp-rule,.ability-row,.modal p,.section-line span{color:#806c70}
.app:not(.game) .store-card{padding:12px 14px}.store-card h2{margin:6px 0;font-size:19px}.level-facts{margin:8px 0 4px}.level-facts b{margin-top:2px}.stock-note{margin:5px 0;font-size:10px}.play-type{margin-bottom:8px}.play-type button{padding:8px}.versus-card .pvp-rule{margin:3px 0;line-height:1.6}.rank-card{margin:8px 0;padding:10px 12px}.rank-card .rank-trophy{width:58px;height:58px}.section-line{margin:13px 0 8px}.sub-actions{margin-top:10px}
.character-spotlight{display:grid;grid-template-columns:86px minmax(0,1fr);gap:9px;align-items:center;padding:10px}.character-spotlight .detail-header{margin-bottom:5px;flex-wrap:wrap;gap:4px}.character-spotlight .role-tag{background:#f6e3df;color:#865f6a}.ability-row{font-size:11px;line-height:1.65}.ability-row+.ability-row{margin-top:5px}.ability-row b{color:#67525d}
.cast-figure{position:relative;display:inline-grid;place-items:center;width:96px;height:96px;flex:none;overflow:visible;pointer-events:none;vertical-align:middle;isolation:isolate}
.cast-drawing{position:relative;display:block;width:100%;height:100%;transform-origin:50% 87%;animation:cast-breathe 3.8s ease-in-out infinite;z-index:1}
.cast-drawing>.art-sprite{width:100%!important;height:100%!important;max-height:none!important;margin:0!important;filter:none!important}
.cast-shadow{position:absolute;width:48%;height:7%;bottom:3%;border-radius:50%;background:#b29a7a25;filter:blur(1px)}
.pose-skill .cast-drawing{animation:cast-skill 620ms ease-out both}.pose-cheer .cast-drawing{animation:cast-cheer 650ms ease-in-out both}.character-spotlight>.cast-figure{width:86px;height:94px}.avatar-big{display:flex;justify-content:center;align-items:center}.avatar-big>.cast-figure{width:130px;height:136px}.modal-character>.cast-figure{width:106px;height:112px}.modal-character>div>.skill-emblem{margin-bottom:7px}.roster-head>.cast-figure{width:78px;height:84px}.roster-head{align-items:center}.result-trophy{position:relative}.result-trophy>.rank-trophy{position:absolute;right:16%;bottom:0;width:54px;height:54px}
.game .game-summary.cast-summary{position:relative;display:grid;align-items:center;gap:4px;padding:3px 8px;border-radius:18px;background:linear-gradient(110deg,#fffdf6,#fceee8);min-height:0;overflow:visible}
.game .solo-cast{grid-template-columns:minmax(0,1fr) auto}.solo-cast .cast-member{display:flex;align-items:center;gap:7px}.game .solo-cast .cast-figure{width:86px;height:92px}.game .player-info strong{color:#634d58;font-size:13px}.game .player-info p{color:#806b75;font-size:10px;white-space:normal}.game .timer{margin-left:0;min-width:68px;text-align:center;align-self:center}.game .timer strong{font-size:28px;line-height:1.1;color:#925d74;font-variant-numeric:tabular-nums}.game .timer span{font-size:9px;color:#806b75}.timer>small{display:block;margin-top:6px;font-size:8px;color:#8b7280}
.game .duel-cast{grid-template-columns:minmax(0,1fr) 70px minmax(0,1fr);background:linear-gradient(90deg,#fbe9e8,#fffaf0 46%,#e8f0f4)}
.duel-cast .cast-member{min-width:0;display:flex;flex-direction:column;align-items:center;position:relative;text-align:center}.game .duel-cast .cast-figure{width:76px;height:72px}.duel-cast .player-info strong,.duel-cast .other-cast>strong{font-size:11px;line-height:15px;color:#705a67;white-space:nowrap}.game .duel-cast .player-info p{font-size:9px;margin-top:1px;line-height:12px}.other-cast>small{font-size:9px;color:#7b798c;line-height:13px}.other-cast .cast-drawing{animation-delay:-1.5s}.duel-cast .status-tags{position:absolute;top:3px;right:0;flex-direction:column;font-size:8px}.status-tags span{border-radius:5px;line-height:12px}
.game .opponent-bar{min-height:19px;padding:1px 8px;font-size:9px;border:0;border-radius:6px;background:#eaf0f2}.game .opponent-bar span{gap:3px}.game .goal-chip{border-width:1px;padding:5px 7px}.game .goal-label{color:#746d68}.game .goal-number{font-weight:800;font-size:15px;color:#5d5751}.game .goal-chip.done{border-color:#a5bc91}.game .board-help{color:#806775}.game .board-label{color:#866e54}.game .shelf-depth{color:#6f583f}.game .shelf-id{color:#65513e}.game .game-effects .effect-pill{color:#62724c}.game .game-effects .negative{color:#905c68}
.game .duel-cast .player-info{display:block;flex:none;width:100%;text-align:center}.game .connection-status:not(.reconnecting){position:absolute;width:1px;height:1px;min-height:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.game .board-help{position:relative;z-index:9}body:has(.app.game) .toast{bottom:calc(var(--safe-bottom) + 122px)}
.game .game-controls{gap:6px}.game .game-skill{min-height:54px;padding:5px 8px;position:relative;overflow:hidden;gap:8px;background:#f4dfe6}.game .game-skill>.skill-emblem{width:40px;height:40px;flex:none;padding:4px;border-radius:11px;background:#fff9ef;box-shadow:0 2px 0 #b4859320}.game .skill-label strong{font-size:12px;color:#6e4b5d}.game .skill-label>span{font-size:9px;color:#806270;line-height:1.5}.game .skill-ready{border-color:#bf8c9e;box-shadow:inset 0 0 0 1px #fff9ee}.game .energy-dots{gap:3px;flex-direction:column;margin-left:auto}.game .energy-dots i{width:5px;height:8px;border-radius:3px}.game .energy-dots i.full{background:#ad6c89}.game .end-turn{min-height:54px;min-width:77px;padding:7px 9px;box-shadow:0 3px 0 #76536120}
.game .item-button{min-height:55px;gap:3px;padding:4px 5px;position:relative;justify-content:flex-start;border-radius:12px}.game .item-button>.art-items{width:40px;height:40px;flex:none}.game .item-copy{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.game .item-copy strong{font-size:11px;line-height:14px;color:#6d535d;white-space:nowrap}.game .item-copy small{font-size:8px;line-height:11px;color:#826b72;white-space:nowrap}.game .item-button b{position:absolute;right:3px;top:2px;font-size:9px;padding:0 3px;line-height:13px;border-radius:5px;color:#825d70;background:#fffdf6;min-width:18px;text-align:center}.game .item-button:disabled{opacity:.55;filter:saturate(.55)}.game .game-skill:disabled{opacity:.65}
.game .slot>.art-goods{filter:drop-shadow(0 2px 1px #81653b1f)}.game .rear-peek>.art-goods{opacity:.53}.game .slot.locked:before{content:"";position:absolute;inset:7% 5%;border-radius:9px;background:linear-gradient(125deg,#edfaff44 15%,#ffffff85 16%,#edfaff22 23%,#b7dce666 75%);border:1px solid #9ec1d2;pointer-events:none;z-index:2}.game .slot .ice{z-index:3;color:#608fa5;background:#e6f6f9;border-radius:50%;padding:2px}
.play-fx{position:absolute;inset:0;overflow:hidden;pointer-events:none!important;z-index:8;contain:strict}.play-fx>*{position:absolute;display:grid;place-items:center;pointer-events:none}.play-fx .art-goods{width:100%;height:100%;max-height:66px;filter:drop-shadow(0 2px 2px #8e706333)}
.fx-move{animation:goods-move 190ms ease-out both}.fx-clear{animation:goods-clear 290ms var(--fx-delay) ease-out both}.fx-collect{animation:goods-collect 380ms var(--fx-delay) ease-in both}.fx-spark{animation:fx-fade 500ms var(--fx-delay) both}.fx-spark i{position:absolute;width:7px;height:7px;border-radius:2px;transform:rotate(45deg);background:#eac46e;left:22%;top:30%;animation:spark-out 450ms var(--fx-delay) both}.fx-spark i:nth-child(2){left:74%;top:22%;--sx:14px;--sy:-7px}.fx-spark i:nth-child(3){left:18%;top:68%;--sx:-12px;--sy:8px}.fx-spark i:nth-child(4){left:80%;top:70%;--sx:12px;--sy:8px}.fx-spark b{font-size:11px;letter-spacing:2px;background:#fff8e8e8;color:#8e6b32;border-radius:9px;padding:2px 7px}
.fx-ice{animation:fx-fade 560ms var(--fx-delay) both}.fx-ice i{position:absolute;width:35%;height:35%;border:1px solid #82b2c7;background:#cceaf0bb;clip-path:polygon(0 20%,80% 0,100% 65%,35% 100%);left:18%;top:18%;animation:ice-out 540ms var(--fx-delay) ease-out both}.fx-ice i:nth-child(2){left:52%;--sx:16px;--sy:-10px;--rot:38deg}.fx-ice i:nth-child(3){top:52%;--sx:-12px;--sy:16px;--rot:-28deg}.fx-ice i:nth-child(4){left:52%;top:52%;--sx:15px;--sy:18px;--rot:55deg}.fx-ice b{font-size:10px;background:#f0fcfff0;color:#457e94;border-radius:8px;padding:2px 4px;z-index:1}.game .shelf.clear-confirmed{box-shadow:inset 0 0 0 2px #a5bd8c}.goal-gained{animation:goal-gain 550ms ease-out}.skill-used{animation:skill-flash 650ms ease-out}.item-used{animation:item-pop 480ms ease-out}.time-added{animation:time-add 650ms ease-out}.combo-message{color:#906b36!important;font-weight:700}
@keyframes cast-breathe{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-2px) rotate(1deg)}}
@keyframes cast-skill{0%{transform:scale(.94) rotate(-5deg)}35%{transform:translateY(-5px) scale(1.05) rotate(3deg)}65%{transform:translateY(-2px) rotate(-2deg)}100%{transform:none}}
@keyframes cast-cheer{0%,100%{transform:none}28%{transform:translateY(-7px) rotate(-4deg)}55%{transform:translateY(0) rotate(2deg)}77%{transform:translateY(-3px)}}
@keyframes goods-move{0%{transform:translate(0,0);opacity:1}85%{opacity:1}100%{transform:translate(var(--dx),var(--dy));opacity:0}}
@keyframes goods-clear{0%{opacity:0;transform:scale(1)}1%,35%{opacity:1}45%{transform:scale(1.13)}100%{opacity:0;transform:translateY(-9px) scale(.35)}}
@keyframes goods-collect{0%{opacity:1}100%{opacity:0;transform:translateY(45px) scale(.2)}}
@keyframes stock-arrive{0%{opacity:.15;transform:translateY(-9px) scale(.83)}75%{transform:translateY(2px)}100%{opacity:1;transform:none}}
@keyframes fx-fade{0%{opacity:0}5%,60%{opacity:1}100%{opacity:0}}
@keyframes spark-out{0%{opacity:1;transform:translate(0,0) rotate(45deg)}100%{opacity:0;transform:translate(var(--sx,-13px),var(--sy,-9px)) rotate(90deg) scale(.4)}}
@keyframes ice-out{0%{opacity:1;transform:none}100%{opacity:0;transform:translate(var(--sx,-15px),var(--sy,-12px)) rotate(var(--rot,-36deg)) scale(.5)}}
@keyframes goal-gain{40%{background:#e1edcd;box-shadow:inset 0 0 0 1px #9fb387}}
@keyframes skill-flash{35%{background:#f4cddc;box-shadow:inset 0 0 0 2px #bb8098}}
@keyframes item-pop{45%{transform:translateY(-3px);box-shadow:0 3px 0 #bd9b7040}}
@keyframes time-add{40%{transform:scale(1.08);filter:saturate(1.6)}}
@keyframes shelf-sort{40%{transform:translateY(-2px)}70%{transform:translateY(1px)}}
@media(max-height:700px){.game .solo-cast .cast-figure{width:64px;height:68px}.game .duel-cast .cast-figure{width:58px;height:54px}.game .duel-cast{grid-template-columns:minmax(0,1fr) 62px minmax(0,1fr)}.game .game-summary.cast-summary{padding:1px 6px}.game .player-info strong{font-size:11px}.game .player-info p{font-size:9px}.game .timer strong{font-size:23px}.game .timer>small{margin-top:2px;font-size:8px}.game .duel-cast .player-info strong,.game .other-cast>strong{font-size:10px}.game .duel-cast .player-info p,.game .other-cast>small{font-size:8px;line-height:10px}.game .goal-number{font-size:12px}.game .opponent-bar{min-height:16px;font-size:8px}.game .game-controls{gap:4px}.game .game-skill,.game .end-turn{min-height:43px}.game .game-skill{gap:5px;padding:3px 6px}.game .game-skill>.skill-emblem{width:32px;height:32px;padding:3px}.game .skill-label strong{font-size:11px}.game .skill-label>span{font-size:8px}.game .item-button{min-height:43px;padding:3px}.game .item-button>.art-items{width:32px;height:32px}.game .item-copy strong{font-size:10px}.game .item-copy small{font-size:7px}.game .item-button b{font-size:8px;line-height:11px}.game .goal-chip{padding-top:3px;padding-bottom:3px}.game .board-label{margin:1px 0}}
@media(max-width:359px){.game .game-skill{gap:4px;padding:3px 5px}.game .skill-label>span{font-size:7px}.game .end-turn{min-width:70px;font-size:11px}.game .item-button>.art-items{width:29px;height:32px}.game .item-copy small{font-size:7px}.game .item-copy strong{font-size:10px}.game .item-button b{right:2px;top:1px}.game .solo-cast .cast-figure{width:60px}.game .player-info p{font-size:8px}.game .timer{min-width:60px}.character-spotlight{grid-template-columns:72px minmax(0,1fr)}.character-spotlight>.cast-figure{width:72px;height:86px}.ability-row{font-size:10px}.game .goal-label{font-size:8px}}
@media(prefers-reduced-motion:reduce){.cast-drawing{animation:none}.play-fx{display:none}}
