  /* ================= 战斗 ================= */
  #battle{position:absolute;inset:0;display:flex;flex-direction:column;background:#070a12;}
  #stage{position:relative;flex:1 1 auto;min-height:0;overflow:hidden;}
  #stageBg{position:absolute;inset:0;overflow:hidden;background:#0b1220;}
  #stageImg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
    transform:scale(1.04);filter:brightness(1.04) contrast(1.1) saturate(1.08);}
  #stageBg::before{content:"";position:absolute;inset:0;z-index:1;
    background:
      radial-gradient(70% 45% at 50% 38%,rgba(120,180,255,.10),rgba(0,0,0,0) 70%),
      linear-gradient(180deg,rgba(4,8,16,.55) 0%,rgba(4,8,16,0) 28%,rgba(4,8,16,0) 62%,rgba(4,8,16,.82) 100%);}
  #stageBg::after{content:"";position:absolute;inset:0;z-index:1;mix-blend-mode:screen;opacity:.5;
    background:linear-gradient(100deg,rgba(120,200,255,0) 30%,rgba(150,220,255,.14) 46%,rgba(120,190,255,0) 62%);}
  #stageBg::after{content:"";position:absolute;inset:0;
    background:radial-gradient(78% 55% at 50% 44%,rgba(10,16,30,.14) 0%,rgba(6,10,20,.66) 60%,rgba(4,7,14,.94) 100%);}

  #topbar{flex:0 0 auto;position:relative;z-index:5;display:flex;justify-content:space-between;align-items:center;
    padding:calc(env(safe-area-inset-top,0px) + 8px) 14px 0;font-size:12px;letter-spacing:.1em;color:#b9c9e6;}
  #topbar .stage-name{color:#ffd98a;text-shadow:0 2px 10px rgba(0,0,0,.8);}
  #topbar .credit{font-size:9px;opacity:.42;letter-spacing:.05em;}
  #battleOps{display:flex;gap:5px;align-items:center;}
  .opbtn{font-size:9.5px;padding:2px 7px;border-radius:9px;cursor:pointer;
    border:1px solid rgba(150,200,255,.35);color:#9fd0ff;line-height:1.5;}
  .opbtn.on{background:rgba(120,200,255,.22);color:#eaf6ff;border-color:rgba(150,220,255,.7);}
  .opbtn:active{filter:brightness(1.35);}

  #fx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:6;}
  #edgeflash{position:absolute;inset:0;pointer-events:none;z-index:7;opacity:0;
    transition:opacity .22s ease-out;
    background:radial-gradient(120% 90% at 50% 50%,rgba(0,0,0,0) 42%,rgba(190,30,45,.55) 100%);}
  #sweep{position:absolute;inset:0;pointer-events:none;z-index:7;opacity:0;overflow:hidden;}
  #sweep.on::after{content:"";position:absolute;top:-20%;bottom:-20%;width:38%;
    background:linear-gradient(100deg,rgba(255,255,255,0),rgba(200,240,255,.35),rgba(255,255,255,0));
    animation:sweepGo .5s ease-out forwards;}
  @keyframes sweepGo{0%{left:-45%}100%{left:105%}}
  /* 血条裂纹 */
  .bar.crack::after{
    content:"";position:absolute;inset:0;pointer-events:none;border-radius:2px;
    background:
      linear-gradient(105deg,transparent 46%,rgba(255,255,255,.85) 47%,transparent 49%),
      linear-gradient(74deg,transparent 58%,rgba(255,255,255,.6) 59%,transparent 61%),
      linear-gradient(120deg,transparent 30%,rgba(255,255,255,.5) 31%,transparent 33%);
    animation:crackFade .3s ease-out forwards;}
  @keyframes crackFade{0%{opacity:1}100%{opacity:0}}
  /* 敌人死亡淡出 */
  .foe.dying{animation:foeDie .5s ease-out forwards;}
  @keyframes foeDie{0%{opacity:1;filter:brightness(2)}100%{opacity:0;filter:brightness(2)}}
  /* 顿帧：短暂提亮 + 冻结动画 */
  #battle.hitstop *{animation-play-state:paused !important;}
  #battle.hitstop #stageImg{filter:brightness(1.5) contrast(1.1) !important;}
  #hitflash{position:absolute;inset:0;pointer-events:none;z-index:7;opacity:0;
    transition:opacity .18s ease-out;background:radial-gradient(60% 50% at 50% 45%,rgba(255,220,140,.55),rgba(255,180,80,0) 70%);}
  #enemyZone{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
    padding:4px 2px;overflow:hidden;z-index:3;}
  #enemyList{display:flex;gap:4px;align-items:center;justify-content:center;
    width:100%;height:100%;overflow:visible;}
  .foe{position:relative;z-index:3;flex:1 1 0;min-width:0;display:flex;flex-direction:column;
    align-items:center;justify-content:flex-end;gap:2px;padding-bottom:2px;cursor:pointer;
    transition:filter .15s;}
  .foe.sel{filter:drop-shadow(0 0 16px rgba(255,215,130,.75));}
  .foe.sel .fimg{filter:drop-shadow(0 0 14px rgba(255,215,130,.55));}
  .foe.sel .fname{color:#ffd98a;}
  .foe.dead{opacity:.22;filter:grayscale(1);pointer-events:none;}
  .ftarget{position:absolute;top:-2px;right:2px;font-size:8px;padding:1px 5px;border-radius:6px;
    color:#2a1a04;background:linear-gradient(180deg,#ffe9b0,#ffc44d);font-weight:700;letter-spacing:.06em;
    box-shadow:0 2px 8px rgba(255,180,60,.45);z-index:5;}
  .fidx{position:absolute;left:2px;top:-2px;font-size:8px;color:#cfe4ff;opacity:.85;
    background:rgba(10,16,30,.75);border:1px solid rgba(150,200,255,.3);border-radius:6px;padding:0 4px;}
  .fname{font-size:11px;letter-spacing:.02em;color:#d6e4fb;white-space:nowrap;
    text-shadow:0 2px 6px #000;max-width:100%;overflow:hidden;text-overflow:ellipsis;}
  .fhp{width:84%;max-width:132px;height:6px;background:#141b2d;
    border:1px solid rgba(255,215,130,.35);border-radius:4px;overflow:hidden;}
  .fhp i{display:block;height:100%;width:100%;background:linear-gradient(180deg,#ff8a5c,#c9342b);
    transition:width .3s;}
  .fhpnum{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
    font-size:6.5px;line-height:1;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.9);
    letter-spacing:-.02em;font-variant-numeric:tabular-nums;pointer-events:none;}
  .fimg.art{image-rendering:auto;filter:drop-shadow(0 10px 16px rgba(0,0,0,.7));}
  .dico.art{image-rendering:auto;}
  .fimg{display:block;width:100%;height:auto;max-width:100%;image-rendering:pixelated;
    filter:drop-shadow(0 0 8px rgba(0,0,0,.85));}
  .foe[data-n="1"]{max-width:min(58%,236px);}
  .foe[data-n="2"]{max-width:min(40%,180px);}
  .foe[data-n="3"]{max-width:min(31%,132px);}
  @media (orientation:landscape){
    .foe[data-n="1"]{max-width:min(30%,160px);}
    .foe[data-n="2"]{max-width:min(26%,130px);}
    .foe[data-n="3"]{max-width:min(22%,108px);}
    .ftarget{position:absolute;top:-2px;right:2px;font-size:8px;padding:1px 5px;border-radius:6px;
    color:#2a1a04;background:linear-gradient(180deg,#ffe9b0,#ffc44d);font-weight:700;letter-spacing:.06em;
    box-shadow:0 2px 8px rgba(255,180,60,.45);z-index:5;}
  .fidx{position:absolute;left:2px;top:-2px;font-size:8px;color:#cfe4ff;opacity:.85;
    background:rgba(10,16,30,.75);border:1px solid rgba(150,200,255,.3);border-radius:6px;padding:0 4px;}
  .fname{font-size:10px;}
  }
  .foe::after{content:"";position:absolute;left:50%;bottom:20px;width:64%;height:10px;
    transform:translateX(-50%);border-radius:50%;z-index:-1;
    background:radial-gradient(ellipse,rgba(0,0,0,.55),rgba(0,0,0,0) 70%);}
  .foe.hurt .fimg{filter:brightness(2.6) saturate(.4) drop-shadow(0 0 14px rgba(255,120,90,.8));}
  .fsh{width:84%;max-width:132px;margin-bottom:1px;}
  .fsh i{display:block;height:100%;background:linear-gradient(180deg,#9fe0ff,#4aa8e0);transition:width .3s;}
  .fshnum{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
    font-size:6.5px;color:#eaf6ff;text-shadow:0 1px 2px rgba(0,0,0,.9);pointer-events:none;}
  .ftags{display:flex;gap:3px;flex-wrap:wrap;justify-content:center;min-height:13px;
    width:100%;max-width:100%;}
  .ftag{font-size:8px;padding:0 4px;border-radius:6px;background:rgba(10,16,30,.82);
    border:1px solid rgba(255,255,255,.16);white-space:nowrap;line-height:1.45;}
  .ftag.charge{border-color:rgba(255,212,94,.75);box-shadow:0 0 8px rgba(255,200,80,.35);}
  .ftag.danger{border-color:rgba(255,92,110,.85);background:rgba(60,10,16,.9);
    box-shadow:0 0 10px rgba(255,70,90,.5);font-weight:700;}

  /* 飘字 */
  .floatnum{position:absolute;z-index:9;pointer-events:none;font-weight:800;
    font-size:24px;letter-spacing:.02em;color:#fff;white-space:nowrap;transform:translate(-50%,0);
    text-shadow:0 2px 6px #000,0 0 14px rgba(120,200,255,.55);
    animation:floatUp .95s cubic-bezier(.2,.7,.3,1) forwards;}
  .floatnum.weak{color:#ffd45e;font-size:29px;text-shadow:0 2px 6px #000,0 0 18px rgba(255,190,60,.9);}
  .floatnum.res{color:#a6b8d2;font-size:19px;}
  .floatnum.heal{color:#8dffb8;text-shadow:0 2px 6px #000,0 0 14px rgba(120,255,170,.7);}
  .floatnum.hurt{color:#ff8494;font-size:21px;text-shadow:0 2px 6px #000,0 0 12px rgba(255,90,110,.6);}
  @keyframes floatUp{
    0%{opacity:0;transform:translate(-50%,6px) scale(.86)}
    18%{opacity:1;transform:translate(-50%,-2px) scale(1.06)}
    100%{opacity:0;transform:translate(-50%,-42px) scale(1)}
  }
  #chainSlot{position:absolute;left:0;right:0;top:8px;z-index:9;text-align:center;
    font-size:22px;font-weight:800;letter-spacing:.12em;pointer-events:none;
    text-shadow:0 0 18px currentColor,0 3px 10px #000;opacity:0;transition:opacity .2s;height:28px;}
  #chainSlot.show{opacity:1;}

  #hud{position:relative;z-index:6;flex:0 0 auto;padding:0 10px calc(env(safe-area-inset-bottom,0px) + 8px);
    display:flex;flex-direction:column;justify-content:flex-end;
    background:linear-gradient(180deg,rgba(7,10,18,0),rgba(7,10,18,.86) 18%);}

  #party{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;}
  @media (max-width:430px){#party{grid-template-columns:repeat(2,1fr);gap:5px;}}
  .card{position:relative;display:flex;align-items:center;gap:6px;padding:6px 7px;border-radius:10px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 4px 14px rgba(0,0,0,.35);
    background:linear-gradient(180deg,rgba(26,34,54,.92),rgba(14,19,33,.95));
    border:1px solid rgba(140,170,220,.22);transition:border-color .18s,background .18s;}
  .card.active{border-color:#ffd98a;background:linear-gradient(180deg,rgba(48,40,20,.95),rgba(24,20,12,.96));
    box-shadow:0 0 0 1px rgba(255,217,138,.35),0 0 18px rgba(255,200,100,.25);}
  .card.dead{opacity:.4;filter:grayscale(1);}
  .card.hit{border-color:#ff7c8a;background:linear-gradient(180deg,rgba(70,26,32,.95),rgba(34,14,20,.96));}
  .card .por{width:40px;height:40px;image-rendering:pixelated;flex:0 0 auto;border-radius:50%;
    box-shadow:0 0 0 1px rgba(255,215,140,.45),0 0 10px rgba(255,190,90,.18);
    background:radial-gradient(circle at 50% 60%,rgba(120,170,255,.16),transparent 70%);}
  .card .meta{flex:1;min-width:0;}
  .card .nm{display:flex;align-items:baseline;gap:4px;}
  .card .nm b{font-size:12.5px;letter-spacing:.06em;}
  .card .nm .el{font-size:9px;padding:0 3px;border:1px solid currentColor;border-radius:4px;line-height:1.4;}
  .card .job{font-size:9px;color:#7f93b3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .card .bars{display:flex;flex-direction:column;gap:3px;margin-top:4px;}
  .brow{display:flex;align-items:center;gap:4px;}
  .bar{position:relative;flex:1 1 auto;height:8px;background:#0a1020;border-radius:4px;overflow:hidden;
    box-shadow:inset 0 1px 3px rgba(0,0,0,.85),0 0 0 1px rgba(255,255,255,.07);}
  .btag{position:absolute;left:3px;top:0;bottom:0;display:flex;align-items:center;
    font-size:7px;letter-spacing:.04em;color:rgba(255,255,255,.75);pointer-events:none;}
  .bar i{position:relative;}
  .bar i::after{content:"";position:absolute;left:0;right:0;top:0;height:45%;
    background:linear-gradient(180deg,rgba(255,255,255,.35),rgba(255,255,255,0));}
  .bar i{display:block;height:100%;transition:width .3s;}
  .bnum{flex:0 0 auto;font-size:7.5px;line-height:1;color:#c4d6ea;letter-spacing:-.02em;
    font-variant-numeric:tabular-nums;white-space:nowrap;}
  .bnum.low{color:#ff8494;font-weight:700;}
  .card .lbbar{position:absolute;left:0;right:0;bottom:0;height:2px;background:rgba(255,255,255,.07);}
  .card .lbbar i{display:block;height:100%;background:linear-gradient(90deg,#ffb347,#ffe89a);
    box-shadow:0 0 8px rgba(255,190,90,.8);transition:width .3s;}
  .card .st{display:flex;gap:2px;margin-top:1px;}
  .stchip{font-size:8px;line-height:1.35;padding:0 3px;border-radius:3px;border:1px solid currentColor;}
  .card .ord{position:absolute;top:2px;right:4px;font-size:8.5px;color:#ffd98a;opacity:.9;
    letter-spacing:.04em;max-width:60%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}

  #cmdSlot{height:clamp(160px,33vh,224px);overflow:hidden;}
  @media (orientation:landscape){#cmdSlot{height:clamp(112px,38vh,168px);}}
  #cmd{height:100%;overflow-y:auto;overscroll-behavior:contain;margin-top:6px;padding:8px 8px 4px;
    border-radius:12px;background:linear-gradient(180deg,rgba(18,24,40,.97),rgba(9,13,24,.99));
    border:1px solid rgba(255,205,120,.35);
    box-shadow:inset 0 1px 0 rgba(255,220,150,.12),0 -6px 24px rgba(0,0,0,.55);}
  .cmdhead{display:flex;justify-content:space-between;align-items:baseline;padding:0 3px 5px;}
  .cmdhead .who{font-size:13px;color:#ffe6a8;letter-spacing:.1em;}
  .cmdhead .hint{font-size:10px;color:#7f93b3;}
  .cmdhead .cmdhelp{margin-left:8px;width:17px;height:17px;line-height:15px;text-align:center;
    border-radius:50%;border:1px solid rgba(150,200,255,.5);color:#9fd0ff;font-size:11px;
    cursor:pointer;flex:0 0 auto;}
  .cmdhead .cmdhelp:active{filter:brightness(1.4);}
  .cmdgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:5px;}
  @media (min-width:430px){.cmdgrid{grid-template-columns:repeat(3,1fr);}}
  @media (min-width:680px){.cmdgrid{grid-template-columns:repeat(4,1fr);}}
  .cmdbtn{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:6px 9px;
    background:linear-gradient(180deg,rgba(38,50,78,.95),rgba(20,28,46,.95));
    border:1px solid rgba(150,180,230,.28);border-radius:9px;color:#e8eeff;font-family:inherit;
    cursor:pointer;text-align:left;}
  .cmdbtn b{font-size:12.5px;letter-spacing:.06em;font-weight:600;}
  .cmdbtn span{font-size:9px;color:#93a8c8;letter-spacing:.03em;}
  .cmdbtn:active{filter:brightness(1.35);}
  .cmdbtn:disabled{opacity:.38;}
  .cmdbtn.lb{background:linear-gradient(180deg,rgba(96,72,24,.95),rgba(44,30,10,.95));
    border-color:#ffd76e !important;box-shadow:0 0 16px rgba(255,200,80,.35);}

  /* ================= 通用面板 ================= */
  .screen{position:absolute;inset:0;z-index:20;overflow-y:auto;overflow-x:hidden;
    -webkit-overflow-scrolling:touch;}
  .inner{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;
    scroll-padding-bottom:80px;
    padding:calc(env(safe-area-inset-top,0px) + 18px) 16px calc(env(safe-area-inset-bottom,0px) + 18px);}
  .btn{min-width:170px;padding:12px 24px;font-size:14px;letter-spacing:.16em;font-family:inherit;
    color:#2a1a04;background:linear-gradient(180deg,#ffe9b0,#ffc44d);border:0;border-radius:28px;
    cursor:pointer;box-shadow:0 10px 28px rgba(255,170,60,.22);}
  .btn:active{filter:brightness(1.08);}
  .btn.ghost{background:transparent;color:#bfe0ff;border:1px solid rgba(150,200,255,.4);
    box-shadow:none;min-width:0;padding:10px 18px;font-size:12.5px;}

  /* ================= 首页 ================= */
  #title{display:block;z-index:30;background:radial-gradient(120% 90% at 50% 30%,#182338,#080b14 70%);}
  #title h1{margin:0;font-size:clamp(26px,7vw,40px);letter-spacing:.22em;text-align:center;
    background:linear-gradient(180deg,#fff8e2,#ffce6b 60%,#c88b2e);
    -webkit-background-clip:text;background-clip:text;color:transparent;}
  #title .sub{margin:8px 0 0;font-size:12px;letter-spacing:.3em;color:#8fa4c4;text-align:center;}
  #title .lineup{display:flex;gap:10px;margin:24px 0 6px;align-items:flex-end;justify-content:center;}
  #title .lineup img{width:56px;image-rendering:pixelated;filter:drop-shadow(0 8px 10px rgba(0,0,0,.6));}
  #title .how{font-size:12px;line-height:2;color:#9fb3d2;max-width:330px;margin:14px 0 20px;text-align:center;
    border-top:1px solid rgba(255,215,140,.16);border-bottom:1px solid rgba(255,215,140,.16);padding:12px 0;}
  #title .how em{font-style:normal;color:#ffd98a;}
  #title .credit{margin-top:18px;font-size:9px;color:#5d6c86;letter-spacing:.05em;line-height:1.7;text-align:center;}

  @media (max-height:400px){.inner{justify-content:flex-start;}}

  /* 横屏 / 矮屏紧凑化 */
  @media (orientation:landscape),(max-height:620px){
    .inner{padding-top:calc(env(safe-area-inset-top,0px) + 10px);
      padding-bottom:calc(env(safe-area-inset-bottom,0px) + 10px);}
    #title h1{font-size:clamp(19px,4.4vh,28px);letter-spacing:.18em;}
    #title .sub{margin:3px 0 0;font-size:9px;letter-spacing:.22em;}
    #title .lineup{margin:10px 0 2px;gap:7px;}
    #title .lineup img{width:clamp(28px,7vh,44px);}
    #title .how{font-size:10px;line-height:1.6;margin:8px 0 10px;padding:6px 0;max-width:560px;}
    #title .credit{margin-top:6px;font-size:8px;line-height:1.5;}
    .btn{padding:9px 22px;font-size:13px;min-width:150px;}
    .ptitle{font-size:15px;} .psub{font-size:10px;margin-bottom:8px;}
    #prep .heros{width:min(720px,100%);}
    #prep .hero{padding:5px 7px;min-width:0;}
    #prep .hero .hgear{font-size:8px;}
    .hero img{width:30px;height:30px;}
    .hero{padding:5px 8px;gap:7px;}
    .hero .hname{font-size:12px;}
    .hero .hgear{font-size:8.5px;gap:1px 7px;}
    .hero .detail{font-size:8px;padding:0 5px;}
    .heros{gap:6px;margin-bottom:10px;}
    .stagelist{gap:4px;margin-bottom:10px;}
    .stageitem{font-size:10px;padding:4px 8px;}
    #endlessHint{display:none;}
    #prep .inner{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 10px);}padding-top:calc(env(safe-area-inset-top,0px) + 6px);
      padding-bottom:calc(env(safe-area-inset-bottom,0px) + 6px);}
    .ptitle{font-size:13px;margin:0;}
    .psub{margin-bottom:6px;}
    .matbar{margin-bottom:6px;font-size:10px;}
    .heros{margin-bottom:8px;gap:5px;}
    .diffrow{margin:0 0 8px;}
    .quick{margin-top:0;}
  }

  /* ================= 编队 ================= */
  #prep{background:radial-gradient(110% 70% at 50% 0%,#1a2438,#080b14 65%);}
  .ptitle{font-size:19px;letter-spacing:.2em;color:#ffe6a8;margin:2px 0 2px;}
  .psub{font-size:11px;color:#8fa4c4;letter-spacing:.1em;margin-bottom:14px;}
  .teamrow{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap;justify-content:center;}
  .heros{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;
    width:min(560px,100%);margin-bottom:10px;}
  .hero{position:relative;display:flex;gap:7px;align-items:flex-start;padding:8px 9px;border-radius:12px;min-width:0;
    background:linear-gradient(180deg,rgba(28,36,58,.94),rgba(14,19,33,.96));
    border:1px solid rgba(140,170,220,.2);cursor:pointer;transition:border-color .15s,background .15s;}
  .hero.sel{border-color:#ffd98a;box-shadow:0 0 0 1px rgba(255,217,138,.35);}
  .hero img{width:36px;height:36px;image-rendering:pixelated;flex:0 0 auto;}
  .hero .hinfo{flex:1;min-width:0;}
  .hero .hname{font-size:12.5px;display:flex;gap:4px;align-items:baseline;padding-right:42px;
    white-space:nowrap;overflow:hidden;}
  .hero .hname i{font-style:normal;font-size:9px;border:1px solid currentColor;border-radius:4px;padding:0 3px;}
  .hero .hjob{font-size:9px;color:#8fa4c4;margin-top:1px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hero .hstat{font-size:8.5px;color:#7f93b3;margin-top:2px;letter-spacing:0;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hero .hgear{display:flex;flex-wrap:wrap;gap:2px 9px;font-size:9px;color:#9db4d6;
    margin-top:4px;line-height:1.5;cursor:pointer;max-width:100%;}
  .hero .hgear span{white-space:nowrap;}
  .hero .gearempty{color:#5f6d86;}
  .hero .hgear s{color:#5f6d86;text-decoration:none;}
  .rar-common{color:#c8d4e4;}
  .rar-rare{color:#5aa8ff;}
  .rar-epic{color:#c08cff;}
  .rar-legend{color:#ffcb63;}
  .hero .hgear s{color:#63718c;text-decoration:none;}
  .hero .detail{font-size:12px;line-height:1;color:#8fd8ef;border:1px solid rgba(150,200,255,.4);
    border-radius:8px;padding:2px 7px;white-space:nowrap;}
  .hero .hactions{position:absolute;right:8px;top:7px;display:flex;align-items:center;gap:5px;}
  .hero .relicbadge{font-size:8.5px;color:#ffd98a;border:1px solid rgba(255,215,138,.55);
    border-radius:8px;padding:0 4px;line-height:1.4;background:rgba(60,42,10,.85);}
  .hero .badge{font-size:8.5px;color:#2a1a04;background:#ffd98a;border-radius:8px;padding:1px 5px;display:none;}
  .hero.sel .badge{display:block;}
  .stagelist{width:min(560px,100%);display:flex;gap:6px;margin-bottom:10px;
    overflow-x:auto;overflow-y:hidden;padding-bottom:4px;-webkit-overflow-scrolling:touch;}
  .stagelist::-webkit-scrollbar{height:0;}
  .stageitem{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:3px;
    font-size:11px;padding:7px 12px;border-radius:9px;background:rgba(255,255,255,.045);
    border:1px solid rgba(255,255,255,.07);color:#93a8c8;white-space:nowrap;}
  .stageitem.cur{border-color:rgba(255,215,140,.55);color:#ffe6a8;background:rgba(255,200,100,.08);}
  .stageitem.lock{opacity:.38;}
  .stageitem b{font-weight:600;letter-spacing:.03em;}
  .stageitem span{font-size:9px;opacity:.75;}
  .diffrow{display:flex;gap:8px;margin:2px 0 10px;flex-wrap:wrap;justify-content:center;}
  .diffbtn{min-width:70px;padding:7px 13px;font-size:12px;letter-spacing:.04em;font-family:inherit;
    border-radius:20px;cursor:pointer;color:#9fb4d6;background:rgba(255,255,255,.05);
    border:1px solid rgba(150,200,255,.25);}
  .diffbtn.on{color:#2a1a04;background:linear-gradient(180deg,#ffe9b0,#ffc44d);border-color:transparent;}
  .diffbtn.on.hard{color:#2a0c0c;background:linear-gradient(180deg,#ffc9b0,#ff7a5c);}
  .diffbtn.on.endless{color:#fff0f0;background:linear-gradient(180deg,#c0392b,#5a0f0a);
    border-color:rgba(255,120,110,.85);box-shadow:0 0 18px rgba(255,60,50,.45);}
  .diffbtn.on.abyss{color:#f4e6ff;background:linear-gradient(180deg,#7a3bbf,#4a1d7a);
    border-color:rgba(190,130,255,.8);box-shadow:0 0 16px rgba(150,80,255,.45);}
  .matbar{display:flex;gap:6px 14px;justify-content:center;flex-wrap:wrap;
    font-size:11px;letter-spacing:.02em;color:#8ba0bd;margin-bottom:10px;}
  .matbar b{color:#8fe4ff;font-weight:600;}
  .bico{width:26px;height:26px;border-radius:5px;flex:0 0 auto;display:flex;align-items:center;
    justify-content:center;font-size:12px;color:#ffe6b0;
    background:linear-gradient(135deg,#8b6b3e,#4a3520);border:1px solid rgba(255,220,150,.4);}
  .bagbtn{cursor:pointer;color:#cfe4ff;padding:3px 9px;border-radius:10px;
    background:rgba(120,170,255,.10);border:1px solid rgba(150,200,255,.30);}
  .bagbtn:active{filter:brightness(1.35);}
  .portrait{display:block;margin:2px auto 10px;max-height:200px;width:auto;max-width:100%;
    filter:drop-shadow(0 10px 22px rgba(0,0,0,.65));}
  .statgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin:10px 0 12px;}
  .statcell{display:flex;align-items:baseline;justify-content:space-between;gap:8px;
    padding:6px 10px;border-radius:8px;background:rgba(255,255,255,.05);
    border:1px solid rgba(150,200,255,.16);}
  .statcell .sk{font-size:10px;color:#8fa4c4;}
  .statcell .sv{font-size:13px;color:#eaf4ff;font-weight:600;font-variant-numeric:tabular-nums;}
  .fshbar{position:relative;width:100%;height:8px;border-radius:4px;overflow:hidden;
    background:#0e1826;display:flex;align-items:center;margin-bottom:2px;}
  .fshbar i{display:block;height:100%;transition:width .3s;}
  .fshphy i{background:linear-gradient(180deg,#9fe0ff,#4aa8e0);}
  .fshmag i{background:linear-gradient(180deg,#d6b3ff,#8d5ae0);}
  .fshbar .fshnum{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
    font-size:7px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.95);pointer-events:none;}
  .gline{display:flex;align-items:center;gap:8px;align-items:center;padding:9px 10px;border-radius:10px;
    background:rgba(255,255,255,.05);border:1px solid rgba(150,200,255,.18);margin-bottom:7px;text-align:left;}
  .gline img{width:26px;height:26px;image-rendering:pixelated;flex:0 0 auto;}
  .gline .gname{font-size:12px;flex:1;min-width:0;padding-right:6px;}
  .gline .gmod{font-size:9.5px;color:#9db4d6;margin-top:2px;padding-right:6px;
    word-break:break-word;}
  .gline .gacts{display:flex;flex-direction:column;gap:4px;margin-left:auto;}
  .gline .gb{font-size:10px;padding:4px 9px;border-radius:12px;font-family:inherit;white-space:nowrap;
    background:rgba(255,255,255,.08);color:#dff0ff;border:1px solid rgba(150,200,255,.3);cursor:pointer;}
  .gline .gb.del{background:rgba(255,90,100,.12);border-color:rgba(255,120,130,.45);color:#ffb9c0;}
  .gline .gb:disabled{opacity:.35;}
  .gline .gb.up{background:linear-gradient(180deg,#ffe9b0,#ffc44d);color:#2a1a04;border-color:transparent;}
  .setrow{font-size:10.5px;color:#9db4d6;margin:2px 0 10px;line-height:1.7;text-align:left;}
  .setrow b{color:#ffd98a;font-weight:600;}
  .quick{display:flex;gap:10px;align-items:center;margin-top:10px;flex-wrap:wrap;justify-content:center;
    padding:6px 4px calc(env(safe-area-inset-bottom,0px) + 4px);}

  /* ================= 结算 / 掉落 ================= */
  #result,#drop{display:flex;align-items:center;justify-content:center;padding:22px;
    background:radial-gradient(120% 90% at 50% 35%,rgba(20,28,48,.95),rgba(6,9,16,.98));}
  .panel{width:min(400px,94vw);text-align:center;padding:24px 18px 20px;border-radius:16px;
    background:linear-gradient(180deg,rgba(26,34,56,.96),rgba(12,17,30,.98));
    border:1px solid rgba(255,215,140,.3);box-shadow:0 24px 60px rgba(0,0,0,.6);}
  .rttl{margin:0 0 6px;font-size:23px;letter-spacing:.22em;
    background:linear-gradient(180deg,#fff6dc,#ffcb63);-webkit-background-clip:text;background-clip:text;color:transparent;}
  .rttl.fail{background:linear-gradient(180deg,#ffd7dd,#ff6b7d);-webkit-background-clip:text;background-clip:text;}
  .rsub{font-size:12px;color:#93a8c8;letter-spacing:.08em;margin-bottom:16px;}
  .rlines{display:flex;flex-direction:column;gap:5px;margin-bottom:18px;font-size:12px;color:#c7d6ee;}
  .rline{border-bottom:1px dashed rgba(255,255,255,.08);padding-bottom:5px;}
  .rline.up{color:#ffd98a;}
  .rline.dim{color:#7f93b3;border:0;}

  .drops{display:flex;flex-direction:column;gap:9px;margin:4px 0 16px;}
  .drop{display:flex;gap:10px;align-items:center;text-align:left;padding:10px 12px;border-radius:11px;
    background:rgba(255,255,255,.05);border:1px solid rgba(150,200,255,.22);cursor:pointer;color:#e8eeff;
    font-family:inherit;}
  .drop:active{filter:brightness(1.25);}
  .drop .dico{width:28px;height:28px;image-rendering:pixelated;flex:0 0 auto;}
  .drop .dname{font-size:13px;letter-spacing:.05em;}
  .drop.rar-rare{border-color:rgba(90,168,255,.55);}
  .drop.rar-epic{border-color:rgba(192,140,255,.6);box-shadow:0 0 14px rgba(180,120,255,.2) inset;}
  .drop.rar-legend{border-color:rgba(255,203,99,.75);box-shadow:0 0 18px rgba(255,190,80,.22) inset;}
  .drop .dmod{font-size:10px;color:#9db4d6;margin-top:2px;}
  .drop .dslot{font-size:9px;color:#7f93b3;margin-left:auto;white-space:nowrap;}
  .assign{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin:6px 0 14px;}
  .assign .abtn{padding:9px;border-radius:9px;font-size:12px;font-family:inherit;color:#e8eeff;
    background:rgba(255,255,255,.05);border:1px solid rgba(150,200,255,.22);cursor:pointer;}
  .assign .abtn:active{filter:brightness(1.3);}
  .tip{font-size:10px;color:#6b7c95;letter-spacing:.03em;line-height:1.6;margin-bottom:6px;
    text-align:center;max-width:min(520px,100%);}
  @media (max-width:420px){
    #prep .hero{padding:7px 8px;gap:6px;}
    #prep .hero img{width:32px;height:32px;}
    #prep .hero .hname{font-size:12px;padding-right:38px;}
    #prep .hero .hjob{font-size:8.5px;}
    #prep .hero .hstat{font-size:8px;}
    #prep .hero .detail{font-size:11px;padding:2px 6px;}
  }
  @media (max-width:340px){
    #prep .hero{padding:6px 6px;gap:5px;}
    #prep .hero img{width:28px;height:28px;}
    #prep .hero .hname{font-size:11px;padding-right:32px;}
    #prep .hero .hjob{font-size:8px;}
    #prep .hero .hstat{font-size:7.5px;}
  }
  @media (min-width:900px){
    #prep .heros{grid-template-columns:repeat(3,minmax(0,1fr));width:min(880px,100%);}
  }

  /* 敌人血条数值（覆盖旧规则） */
  .foe .fhp{position:relative;height:10px;display:flex;align-items:center;}
  .foe .fhp i{height:100%;}
  .foe .fhpnum{position:absolute;left:0;right:0;top:0;bottom:0;display:flex;align-items:center;
    justify-content:center;font-size:7px;line-height:1;color:#fff;letter-spacing:-.02em;
    text-shadow:0 1px 2px rgba(0,0,0,.95),0 0 3px rgba(0,0,0,.8);
    font-variant-numeric:tabular-nums;pointer-events:none;z-index:2;}

  /* 战斗界面：血条加粗、数值加大（覆盖旧规则） */
  #party .card{padding:7px 8px;background:linear-gradient(180deg,rgba(20,27,44,.96),rgba(10,14,26,.98));
    border-color:rgba(120,150,200,.3);}
  #party .card .por{width:34px;height:34px;}
  #party .bars{gap:4px;margin-top:5px;}
  #party .brow{gap:5px;}
  #party .bar{height:8px;border-radius:3px;background:#0a1020;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.10);}
  #party .bar i{box-shadow:0 0 6px rgba(120,220,160,.35);}
  #party .bnum{font-size:9px;color:#eaf4ff;font-weight:600;}
  #party .bnum.low{color:#ff7f90;}
  #party .card .lbbar{height:3px;}
