/* Gacha route styles */
.gacha-layout{display:grid;grid-template-columns:minmax(240px,320px) minmax(0,1fr);gap:18px;align-items:stretch}
.gacha-panel,.gacha-stage{border:1px solid rgba(255,255,255,.68);background:rgba(255,255,255,.7);border-radius:26px;box-shadow:0 18px 46px rgba(55,35,82,.1)}
.gacha-panel{padding:18px}
.gacha-panel-head h3{margin:0;color:var(--text)}
.gacha-panel-head p,.gacha-panel-head span,.gacha-policy-note{color:var(--muted);font-size:13px;line-height:1.55}
.gacha-character-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.gacha-character-option{padding:10px;border:1px solid rgba(255,255,255,.7);border-radius:20px;background:rgba(255,255,255,.58);cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.gacha-character-option:disabled{cursor:not-allowed;opacity:.7}
.gacha-character-option img{width:100%;height:110px;object-fit:contain;display:block}
.gacha-character-option strong{display:block;text-align:center;color:var(--text)}
.gacha-character-option.is-selected{border-color:rgba(255,111,161,.72);box-shadow:0 12px 28px rgba(255,111,161,.18);transform:translateY(-2px)}
.gacha-action-head{margin-top:20px}
.gacha-action-grid{display:grid;grid-template-columns:1fr;gap:9px;margin-top:10px}
.gacha-action-grid button,.gacha-demo-refill{border:0;border-radius:999px;padding:11px 14px;background:linear-gradient(135deg,#ff8cb8,#b58cff);color:#fff;font-weight:950;cursor:pointer;box-shadow:0 10px 24px rgba(181,105,180,.2)}
.gacha-action-grid button:disabled{cursor:not-allowed;opacity:.45;box-shadow:none}
.gacha-demo-refill{width:100%;margin-top:12px;background:linear-gradient(135deg,#ffd37b,#ff91b1);color:#6a3b10}
.gacha-policy-note{margin:12px 0 0}
.gacha-stage{position:relative;min-width:0;min-height:560px;padding:22px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr) 198px;gap:10px;align-items:stretch;background:radial-gradient(circle at 50% 14%,rgba(255,228,242,.85),rgba(255,255,255,.56) 42%,rgba(232,223,255,.72))}
.gacha-machine-wrap,.gacha-character-stage{display:flex;align-items:end;justify-content:center;min-width:0;min-height:0}
.gacha-machine{width:min(300px,96%);max-height:390px;object-fit:contain;filter:drop-shadow(0 22px 30px rgba(52,30,79,.18))}
.gacha-machine.is-running{animation:gacha-machine-run .12s linear infinite}
.gacha-character-stage img{width:min(330px,100%);max-height:430px;object-fit:contain;filter:drop-shadow(0 24px 28px rgba(52,30,79,.16));transition:transform .2s ease}
.gacha-character-stage img.is-switching{animation:gacha-character-switch .5s cubic-bezier(.2,1.25,.35,1)}
.gacha-result-card{--result-height:198px;--result-padding:16px 18px;--result-radius:24px;--result-title-size:22px;--result-title-line:1.22;--result-text-size:inherit;--result-text-line:1.55;--result-text-max:3.15em;--reward-list-height:46px;--reward-list-gap:8px;grid-column:1/-1;height:var(--result-height);min-height:var(--result-height);max-height:var(--result-height);display:flex;flex-direction:column;box-sizing:border-box;contain:layout paint;overflow:hidden;border:1px solid rgba(255,255,255,.7);border-radius:var(--result-radius);background:rgba(255,255,255,.74);padding:var(--result-padding)}
.gacha-result-rank{display:inline-flex;align-items:center;align-self:flex-start;width:max-content;max-width:100%;flex:0 0 auto;border-radius:999px;padding:5px 10px;background:#f2eaff;color:#7752b9;font-size:12px;font-weight:950}
.gacha-result-rank[data-rank=fail]{background:#eef0f5;color:#687087}
.gacha-result-rank[data-rank=success]{background:#e8fff3;color:#29865a}
.gacha-result-rank[data-rank=perfect]{background:#fff3c7;color:#a15e00}
.gacha-result-card strong{display:block;flex:0 0 auto;margin-top:8px;color:var(--text);font-size:var(--result-title-size);line-height:var(--result-title-line)}
.gacha-result-card p{flex:0 0 auto;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 0;color:var(--muted);font-size:var(--result-text-size);line-height:var(--result-text-line);max-height:var(--result-text-max);overflow:hidden}
.gacha-reward-list{flex:0 0 var(--reward-list-height);min-height:var(--reward-list-height);display:flex;flex-wrap:nowrap;align-items:flex-start;gap:var(--reward-list-gap);margin-top:12px;padding-bottom:2px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.gacha-reward-list::-webkit-scrollbar{display:none}
.gacha-reward-chip{display:inline-flex;align-items:center;flex:0 0 auto;gap:6px;border-radius:999px;padding:7px 10px;background:rgba(255,255,255,.82);border:1px solid rgba(255,255,255,.7);font-size:13px}
.gacha-reward-chip img{width:24px;height:24px;object-fit:contain}
.gacha-reward-chip b{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:#ffe5b0;color:#8a4a16;font-size:9px}
.gacha-machine-wrap{position:relative}
.gacha-prize-pop-layer{position:absolute;inset:-70px 0 20px;z-index:4;pointer-events:none;overflow:visible}
.gacha-prize-pop{--pop-size:68px;--pop-img-size:50px;--pop-peak-y:-112px;--pop-final-y:-92px;position:absolute;left:50%;bottom:42%;display:inline-flex;align-items:center;justify-content:center;width:var(--pop-size);height:var(--pop-size);border-radius:999px;background:rgba(255,255,255,.9);border:1px solid rgba(255,255,255,.78);box-shadow:0 18px 36px rgba(55,35,82,.22);color:#8a4a16;font-size:14px;font-weight:950;opacity:0;transform:translate(calc(-50% + var(--pop-x,0px)),28px) scale(.6);animation:gacha-prize-pop-hold 1.28s cubic-bezier(.18,1.02,.24,1) var(--pop-delay,0ms) forwards}
.gacha-prize-pop img{width:var(--pop-img-size);height:var(--pop-img-size);object-fit:contain}
.gacha-prize-pop.exp{background:linear-gradient(135deg,rgba(255,232,177,.96),rgba(255,255,255,.92));color:#8a4a16}
.reward-wallet-delta{position:absolute;right:14px;top:-10px;z-index:4;display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:26px;padding:0 9px;border-radius:999px;background:rgba(255,255,255,.96);border:1px solid rgba(255,145,181,.46);box-shadow:0 10px 22px rgba(207,91,143,.22);color:#cf3b67;font-size:15px;font-weight:950;line-height:1;pointer-events:none;animation:reward-wallet-delta-rise 1.58s cubic-bezier(.16,.92,.2,1) forwards}
.reward-wallet-item.is-reward-bumping{animation:reward-wallet-bump 1.46s cubic-bezier(.16,.9,.24,1)}
.reward-wallet-item.is-reward-bumping strong{animation:reward-wallet-count-bump 1.46s cubic-bezier(.16,.9,.24,1)}
.gacha-demo-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}
.gacha-demo-tools .gacha-demo-refill{margin:0}
.gacha-demo-tools .gacha-demo-refill:first-child{grid-column:1/-1}
@keyframes gacha-machine-run{0%,100%{transform:translateX(0) rotate(0)}25%{transform:translateX(-3px) rotate(-1deg)}75%{transform:translateX(3px) rotate(1deg)}}
@keyframes gacha-character-switch{0%{transform:translateY(0) scale(1)}35%{transform:translateY(-20px) scale(1.045)}60%{transform:translateY(5px) scale(.985)}100%{transform:translateY(0) scale(1)}}
@keyframes gacha-prize-pop-hold{0%{opacity:0;transform:translate(calc(-50% + var(--pop-x,0px)),28px) scale(.6)}16%{opacity:1}58%{opacity:1;transform:translate(calc(-50% + var(--pop-x,0px)),calc(var(--pop-peak-y,-112px) - var(--pop-y,0px))) scale(1.18)}100%{opacity:1;transform:translate(calc(-50% + var(--pop-x,0px)),calc(var(--pop-final-y,-92px) - var(--pop-y,0px))) scale(1.04)}}
@keyframes reward-wallet-delta-rise{0%{opacity:0;transform:translate(var(--delta-x,0),8px) scale(.72)}16%{opacity:1;transform:translate(var(--delta-x,0),0) scale(1.12)}52%{opacity:1;transform:translate(var(--delta-x,0),-18px) scale(1.08)}100%{opacity:0;transform:translate(var(--delta-x,0),-42px) scale(.92)}}
@keyframes reward-wallet-bump{0%{transform:scale(1)}22%{transform:scale(1.1)}62%{transform:scale(1.08)}84%{transform:scale(.992)}100%{transform:scale(1)}}
@keyframes reward-wallet-count-bump{0%{transform:scale(1)}22%{transform:scale(1.28)}62%{transform:scale(1.2)}84%{transform:scale(.995)}100%{transform:scale(1)}}
@media (max-width:1120px) and (min-width:901px){
  .gacha-layout{grid-template-columns:minmax(190px,240px) minmax(0,1fr);gap:14px;align-items:start}
  .gacha-panel{padding:14px;border-radius:24px}
  .gacha-panel-head p,.gacha-panel-head span,.gacha-policy-note{font-size:11.5px;line-height:1.4}
  .gacha-character-grid{gap:8px}
  .gacha-character-option{padding:8px;border-radius:18px}
  .gacha-character-option img{height:82px}
  .gacha-character-option strong{font-size:13px}
  .gacha-action-head{margin-top:14px}
  .gacha-action-grid{gap:8px}
  .gacha-action-grid button,.gacha-demo-refill{padding:9px 10px;font-size:13px}
  .gacha-stage{min-height:460px;padding:14px;grid-template-rows:minmax(0,1fr) 178px;border-radius:24px}
  .gacha-character-stage img{width:min(240px,100%);max-height:310px}
  .gacha-machine{width:min(235px,98%);max-height:300px}
  .gacha-result-card{--result-height:178px;--result-padding:13px 14px;--result-title-size:18px;--result-title-line:1.2;--result-text-size:12px;--result-text-line:1.4;--result-text-max:2.9em;--reward-list-height:38px;--reward-list-gap:6px}
  .gacha-result-rank{padding:4px 9px;font-size:11px}
  .gacha-reward-list{height:var(--reward-list-height)}
  .gacha-reward-chip{padding:5px 8px;font-size:12px}
  .gacha-reward-chip img,.gacha-reward-chip b{width:22px;height:22px}
  .gacha-prize-pop-layer{inset:-8px 0 18px}
  .gacha-prize-pop{--pop-size:50px;--pop-img-size:37px;--pop-peak-y:-55px;--pop-final-y:-38px}
}
@media (max-width:900px){
  .gacha-layout{grid-template-columns:minmax(116px,.62fr) minmax(0,1fr);gap:10px;align-items:start}
  .gacha-panel{padding:12px;border-radius:22px}
  .gacha-panel-head p,.gacha-policy-note{font-size:11px;line-height:1.4}
  .gacha-panel-head p{margin-bottom:8px}
  .gacha-character-grid{grid-template-columns:1fr;gap:8px}
  .gacha-character-option{padding:7px;border-radius:16px}
  .gacha-character-option img{height:64px}
  .gacha-character-option strong{font-size:12px}
  .gacha-action-head{margin-top:12px}
  .gacha-action-grid{gap:7px}
  .gacha-action-grid button,.gacha-demo-refill{padding:9px 8px;font-size:12px}
  .gacha-stage{min-height:0;padding:12px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:210px 166px;gap:6px;border-radius:22px}
  .gacha-character-stage,.gacha-machine-wrap{align-items:end}
  .gacha-character-stage img{width:min(178px,100%);max-height:230px}
  .gacha-machine{width:min(170px,98%);max-height:220px}
  .gacha-result-card{--result-height:166px;--result-padding:12px;--result-radius:18px;--result-title-size:18px;--result-text-size:12px;--result-text-line:1.4;--reward-list-height:42px;--reward-list-gap:6px;display:grid;grid-template-rows:24px 24px 44px 42px;gap:5px;align-content:start}
  .gacha-result-card strong{margin-top:0}
  .gacha-result-card p{margin:0;-webkit-line-clamp:2}
  .gacha-reward-list{height:var(--reward-list-height);margin-top:0;flex-basis:auto;align-items:center}
  .gacha-reward-chip{padding:5px 8px;font-size:12px}
  .gacha-prize-pop-layer{inset:-12px 0 18px;overflow:visible}
  .gacha-prize-pop{--pop-size:54px;--pop-img-size:40px;--pop-peak-y:-60px;--pop-final-y:-44px}
}
@media (max-width:560px){
  .reward-wallet-delta{right:50%;top:-9px;--delta-x:50%;font-size:12px;min-width:28px;height:22px;padding:0 7px}
  .gacha-layout{grid-template-columns:104px minmax(0,1fr);gap:8px}
  .gacha-panel{padding:9px}
  .gacha-panel-head h3{font-size:14px}
  .gacha-panel-head p,.gacha-policy-note{display:none}
  .gacha-character-option img{height:52px}
  .gacha-stage{padding:9px;grid-template-rows:148px 150px}
  .gacha-character-stage img{width:min(128px,100%);max-height:170px}
  .gacha-machine{width:min(126px,98%);max-height:166px}
  .gacha-result-rank{padding:4px 9px;font-size:10px}
  .gacha-result-card{--result-height:150px;--result-padding:10px;--result-title-size:15px;--result-title-line:1.18;--result-text-size:10.5px;--result-text-line:1.35;--result-text-max:2.7em;--reward-list-height:34px;--reward-list-gap:6px;grid-template-rows:20px 21px 38px 34px;gap:4px}
  .gacha-result-card strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .gacha-reward-list{height:var(--reward-list-height);padding-bottom:0}
  .gacha-reward-chip{padding:4px 7px;font-size:12px}
  .gacha-reward-chip img,.gacha-reward-chip b{width:20px;height:20px}
  .gacha-prize-pop-layer{inset:-4px 0 18px}
  .gacha-prize-pop{--pop-size:42px;--pop-img-size:31px;--pop-peak-y:-38px;--pop-final-y:-24px;bottom:48%}
}
@media (max-width:520px){
  .gacha-demo-tools{grid-template-columns:1fr}
}
@media (max-width:390px){
  .gacha-layout{grid-template-columns:96px minmax(0,1fr)}
  .gacha-action-grid button,.gacha-demo-refill{font-size:11px;padding:8px 5px}
  .gacha-character-option strong{font-size:11px}
  .gacha-stage{grid-template-rows:136px 146px}
  .gacha-character-stage img{max-height:150px}
  .gacha-machine{max-height:146px}
  .gacha-result-card{--result-height:146px;--reward-list-height:32px;grid-template-rows:19px 20px 36px 32px}
  .gacha-reward-list{height:var(--reward-list-height)}
  .gacha-prize-pop{--pop-size:38px;--pop-img-size:28px;--pop-peak-y:-32px;--pop-final-y:-20px}
}
