  /* ================= v79 界面重构层 ================= */
  :root{
    --bg0:#05080f; --bg1:#0a1120; --bg2:#101a2b;
    --line1:rgba(217,185,121,.18); --line2:rgba(217,185,121,.42);
    --gold:#d9b979; --goldhi:#f7e8c2; --golddk:#8c7442;
    --ice:#8fd3ff; --txt:#eaf1fb; --txt2:#a7bbd5; --txt3:#74889f;
    --r1:8px; --r2:12px; --r3:16px;
  }
  body{
    font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
    color:var(--txt);background:var(--bg0);
  }
  h1,.rttl,.ptitle,#topbar .stage-name,.boottitle,.panel h2,.tbrand h1{
    font-family:"Songti SC","Source Han Serif SC","Noto Serif CJK SC","STSong",serif;
  }

  /* ---- 面板：去掉噪点纹理，改克制玻璃 + 角标 ---- */
  .panel,.card,.hero,#cmd,.statcell,.drop,.gline,.rwcell,.crow{
    background-image:linear-gradient(165deg,rgba(26,35,54,.97),rgba(8,12,21,.99));
    background-blend-mode:normal;
    border:1px solid var(--line1);
    box-shadow:inset 0 1px 0 rgba(255,244,220,.10),0 10px 26px rgba(0,0,0,.45);
    backdrop-filter:blur(3px);
  }
  .panel{border-radius:var(--r3);padding:22px 18px 18px;}
  .panel::after,.card::after,#cmd::after{inset:5px;border-radius:10px;opacity:.4;}
  .rttl{font-size:22px;letter-spacing:.22em;}
  .rttl::after{left:28%;right:28%;opacity:.75;}
  .rsub{font-size:11.5px;color:var(--txt3);letter-spacing:.12em;}

  /* ---- 按钮 ---- */
  .btn{
    border-radius:8px;min-width:0;padding:13px 26px;font-size:14px;letter-spacing:.24em;
    background:linear-gradient(180deg,#f7e7bf 0%,#dcba79 46%,#b08c4d 100%);
    color:#1d1305;border:1px solid rgba(255,238,196,.6);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 -2px 6px rgba(90,60,15,.28),0 8px 22px rgba(0,0,0,.5);
    transition:transform .12s,filter .12s;
  }
  .btn:active{transform:translateY(1px);filter:brightness(1.06);}
  .btn.ghost{
    background:linear-gradient(180deg,rgba(24,33,50,.94),rgba(11,16,27,.97));
    color:#cfe0f4;border:1px solid rgba(150,185,230,.3);border-radius:8px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.07);
    letter-spacing:.14em;
  }
  .btn.ghost:active{background:linear-gradient(180deg,rgba(34,45,66,.96),rgba(14,20,33,.98));}

  /* ---- 首页 ---- */
  #title .tinner{
    min-height:100%;display:flex;flex-direction:column;align-items:center;
    justify-content:space-between;gap:18px;
    padding:calc(env(safe-area-inset-top,0px) + 40px) 20px calc(env(safe-area-inset-bottom,0px) + 20px);
  }
  .tbrand{text-align:center;padding-top:6px;}
  .tkicker{font-size:9px;letter-spacing:.6em;color:var(--golddk);margin-bottom:12px;padding-left:.6em;}
  #title h1{font-size:clamp(34px,10.5vw,52px);letter-spacing:.3em;padding-left:.3em;line-height:1.06;}
  .tdivider{width:min(220px,58vw);height:1px;margin:14px auto 12px;
    background:linear-gradient(90deg,rgba(217,185,121,0),rgba(247,232,194,.85),rgba(217,185,121,0));}
  #title .sub{font-size:10px;letter-spacing:.46em;padding-left:.46em;color:#b39a6d;}
  .tparty{display:flex;flex-direction:column;align-items:center;gap:0;}
  #title .lineup{gap:7px;margin:0 0 16px;align-items:center;}
  #title .lineup img{
    width:46px;height:46px;border-radius:9px;object-fit:cover;
    box-shadow:0 0 0 1px rgba(0,0,0,.7),0 0 0 2px rgba(217,185,121,.5),0 8px 18px rgba(0,0,0,.55);
    filter:saturate(1.05);
  }
  #title .how{font-size:12px;letter-spacing:.14em;color:#dce7f5;line-height:1.9;max-width:none;}
  #title .how .dot{color:var(--golddk);margin:0 8px;}
  .tslogan{margin:8px 0 0;font-size:10.5px;letter-spacing:.22em;color:var(--txt3);}
  .taction{width:min(340px,100%);display:flex;flex-direction:column;align-items:center;gap:12px;}
  .taction .btn{width:100%;padding:15px 0;font-size:15.5px;letter-spacing:.32em;padding-left:.32em;}
  .taction .credit{margin:2px 0 0;font-size:8.5px;color:#4a576c;line-height:1.7;text-align:center;letter-spacing:.06em;}
  .taction .credit .ver{font-style:normal;color:var(--golddk);margin-left:6px;letter-spacing:.1em;}

  /* ---- 编队页 ---- */
  #prep{background:radial-gradient(120% 60% at 50% -10%,#141d31 0%,#070b14 62%);}
  #prep .inner{padding-top:calc(env(safe-area-inset-top,0px) + 16px);}
  .ptitle{font-size:20px;letter-spacing:.24em;color:var(--goldhi);margin:0 0 6px;padding-left:.24em;}
  .psub{font-size:10.5px;letter-spacing:.14em;color:var(--txt3);margin-bottom:12px;}
  .matbar{
    display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;
    width:min(560px,100%);margin:0 0 10px;font-size:10.5px;letter-spacing:.02em;
  }
  .matbar > span,.matbar .bagbtn{
    display:flex;align-items:center;justify-content:center;gap:5px;height:30px;
    border:1px solid rgba(150,185,230,.16);border-radius:7px;color:var(--txt2);
    background:linear-gradient(180deg,rgba(20,29,46,.9),rgba(9,13,23,.95));padding:0 4px;
    white-space:nowrap;overflow:hidden;
  }
  .matbar .bagbtn:active{background:linear-gradient(180deg,rgba(32,44,66,.95),rgba(12,17,29,.97));}
  .matbar b{color:var(--goldhi);font-weight:600;font-size:11.5px;font-variant-numeric:tabular-nums;}

  /* 难度 / 章节：一体化分段控件 */
  .diffrow{
    display:flex;gap:0;flex-wrap:nowrap;width:min(560px,100%);
    border:1px solid var(--line2);border-radius:8px;overflow:hidden;
    background:rgba(8,12,22,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
  }
  .diffrow .diffbtn{
    flex:1 1 0;min-width:0;border:0;border-radius:0;background:transparent;
    color:var(--txt2);padding:9px 2px;font-size:12px;letter-spacing:.06em;
    border-right:1px solid rgba(217,185,121,.14);
  }
  .diffrow .diffbtn:last-child{border-right:0;}
  .diffrow .diffbtn.on{
    color:#20160a;background:linear-gradient(180deg,#f4e5bc,#d2aa63);
    box-shadow:inset 0 0 0 1px rgba(255,240,200,.5);
  }
  .diffrow .diffbtn.on.hard{color:#2a0c0c;background:linear-gradient(180deg,#ffcbb4,#e8704c);}
  .diffrow .diffbtn.on.abyss{color:#f6ecff;background:linear-gradient(180deg,#8a4fd0,#5b2496);}
  .diffrow .diffbtn.on.endless{color:#fff2f0;background:linear-gradient(180deg,#c0392b,#7a140c);}

  .stagelist{
    width:min(560px,100%);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
    gap:5px;padding:0;margin-bottom:8px;overflow:visible;
    -webkit-mask-image:none;mask-image:none;
  }
  .stagelist .stageitem{width:100%;min-width:0;padding:7px 4px;}
  .stagelist .stageitem b{font-size:10.5px;max-width:100%;overflow:hidden;text-overflow:ellipsis;
    white-space:nowrap;letter-spacing:0;}
  .stagelist .stageitem span{font-size:8px;}
  .stageitem{
    display:flex;flex-direction:column;align-items:center;gap:2px;
    padding:8px 12px;border-radius:7px;font-size:11px;
    background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02));
    border:1px solid rgba(255,255,255,.08);color:var(--txt2);
  }
  .stageitem b{font-weight:600;letter-spacing:.02em;color:#dbe7f7;}
  .stageitem span{font-size:8.5px;color:var(--txt3);}
  .stageitem.cur{
    border-color:var(--line2);color:var(--goldhi);
    background:linear-gradient(180deg,rgba(74,58,24,.7),rgba(28,22,10,.9));
    box-shadow:0 0 0 1px rgba(217,185,121,.28),0 4px 14px rgba(0,0,0,.4);
  }
  .stageitem.cur b{color:var(--goldhi);}
  .stageitem.cur span{color:#c9ab74;}

  .heros{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;width:min(560px,100%);}
  .hero{
    --role:#7fb6ff;
    display:grid;grid-template-columns:42px 1fr;gap:9px;align-items:start;
    padding:9px 10px 9px 12px;border-radius:10px;overflow:hidden;
  }
  .hero::before{
    content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
    background:linear-gradient(180deg,rgba(0,0,0,0),var(--role),rgba(0,0,0,0));
    opacity:.75;
  }
  .hero.role-black{--role:#a97bff;} .hero.role-white{--role:#f4dfa8;}
  .hero.role-knight{--role:#7fb6ff;} .hero.role-berserk{--role:#ff7a5c;}
  .hero.role-lancer{--role:#7ee0b8;}
  .hero.sel{
    border-color:rgba(217,185,121,.55);
    background:linear-gradient(165deg,rgba(42,40,30,.97),rgba(12,16,26,.99));
    box-shadow:inset 0 1px 0 rgba(255,240,200,.16),0 0 0 1px rgba(217,185,121,.28),0 8px 20px rgba(0,0,0,.5);
  }
  .hero img{width:42px;height:42px;border-radius:7px;object-fit:cover;
    box-shadow:0 0 0 1px rgba(0,0,0,.75),0 0 0 2px rgba(150,180,220,.28);}
  .hero.sel img{box-shadow:0 0 0 1px rgba(0,0,0,.75),0 0 0 2px rgba(247,232,194,.7);}
  .hero .hname{font-size:12.5px;font-weight:600;letter-spacing:.04em;padding-right:44px;}
  .hero .hname i{font-size:8.5px;color:var(--role)!important;border-color:currentColor;
    border-radius:3px;padding:0 3px;opacity:.95;}
  .hero .hjob{font-size:9px;color:var(--txt3);margin-top:2px;}
  .hero .hstat{font-size:8.5px;color:#8296b2;margin-top:2px;font-variant-numeric:tabular-nums;}
  .hero .badge{font-size:8px;border-radius:4px;padding:1px 5px;letter-spacing:.06em;}
  .hero .badge.wait{background:transparent;border:1px solid rgba(150,190,240,.22);color:#8fa3bd;}
  .hero .detail{border-radius:6px;padding:2px 6px;font-size:11px;color:#9fd7ef;
    border-color:rgba(150,200,255,.28);background:rgba(120,180,255,.08);}
  .hero .relicbadge{border-radius:4px;font-size:8px;}

  #prep .quick{
    position:sticky;bottom:0;z-index:6;width:min(560px,100%);
    margin:6px 0 0;padding:10px 2px calc(env(safe-area-inset-bottom,0px) + 10px);
    gap:8px;display:flex;align-items:center;
    background:linear-gradient(180deg,rgba(6,10,18,0),rgba(6,10,18,.9) 40%,rgba(5,8,15,.99));
    backdrop-filter:blur(6px);
  }
  #prep .quick .btn{flex:1 1 60%;padding:13px 0;font-size:14.5px;letter-spacing:.24em;padding-left:.24em;}
  #prep .quick .btn.ghost{flex:0 1 40%;padding:13px 8px;font-size:11.5px;letter-spacing:.06em;}

  /* ---- 战斗顶栏 ---- */
  #topbar{
    padding-bottom:7px;border-bottom:1px solid rgba(217,185,121,.16);
    background:linear-gradient(180deg,rgba(5,8,15,.92),rgba(5,8,15,.35) 70%,rgba(5,8,15,0));
  }
  #topbar .stage-name{font-size:13px;letter-spacing:.16em;}
  #topbar .credit{font-size:8px;}
  #battleOps{gap:6px;}
  .opbtn{
    font-size:10px;padding:3px 9px;border-radius:6px;letter-spacing:.08em;
    border:1px solid rgba(150,190,240,.24);
    background:linear-gradient(180deg,rgba(28,38,58,.8),rgba(10,15,26,.9));
    color:#a9bed8;box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
  }
  .opbtn.on{
    color:#f7ecc9;border-color:rgba(217,185,121,.6);
    background:linear-gradient(180deg,rgba(96,74,32,.9),rgba(38,28,10,.95));
    box-shadow:inset 0 1px 0 rgba(255,235,180,.3),0 0 12px rgba(217,185,121,.22);
  }

  /* ---- 敌人 ---- */
  #enemyZone{padding:6px 6px 2px;}
  .foe{gap:3px;}
  .fname{font-size:11.5px;font-weight:600;letter-spacing:.04em;color:#e7f0fc;}
  .fidx{font-size:8px;background:rgba(6,10,18,.8);border-color:rgba(217,185,121,.35);
    color:var(--goldhi);border-radius:4px;}
  .foe .fhp{height:9px;border-radius:5px;background:rgba(6,9,16,.9);
    box-shadow:inset 0 0 0 1px rgba(0,0,0,.85),inset 0 1px 3px rgba(0,0,0,.9);}
  .foe .fhp i{background:linear-gradient(180deg,#ff9a6a,#b8291f);}
  .foe .fhpnum{font-size:8px;font-weight:600;letter-spacing:0;}
  .ftags{min-height:12px;gap:4px;}
  .ftag{font-size:8px;border-radius:4px;padding:0 4px;letter-spacing:.04em;}
  .ftarget{font-size:7.5px;border-radius:4px;padding:1px 5px;letter-spacing:.1em;}

  /* ---- 队伍卡 ---- */
  #party{gap:6px;}
  #party .card{
    padding:7px 8px 8px;border-radius:9px;gap:7px;align-items:center;
  }
  #party .card .por{width:38px;height:38px;border-radius:7px;object-fit:cover;}
  #party .card .nm b{font-size:13px;letter-spacing:.04em;}
  #party .card .nm .el{font-size:8px;border-radius:3px;padding:0 3px;opacity:.9;}
  #party .card .job{font-size:9px;color:var(--txt3);letter-spacing:.02em;}
  #party .bars{gap:5px;margin-top:5px;}
  #party .brow{gap:6px;}
  #party .bar{height:8px;border-radius:4px;}
  #party .bnum{font-size:9px;min-width:44px;text-align:right;color:#dce9f7;font-weight:600;}
  #party .btag{font-size:7px;left:5px;color:rgba(255,255,255,.55);letter-spacing:.06em;}
  #party .card.active{
    border-color:rgba(217,185,121,.6);
    background:linear-gradient(165deg,rgba(46,42,28,.97),rgba(14,17,26,.99));
    box-shadow:inset 0 1px 0 rgba(255,240,200,.18),0 0 0 1px rgba(217,185,121,.3),0 6px 18px rgba(0,0,0,.5);
  }
  #party .card.active::after{width:3px;top:0;bottom:0;}
  #party .card.active .por{box-shadow:0 0 0 1px rgba(0,0,0,.8),0 0 0 2px rgba(247,232,194,.8);}
  .stchip{font-size:7.5px;border-radius:3px;padding:0 3px;}

  /* ---- 指令区 ---- */
  #cmdSlot{height:clamp(152px,31vh,206px);}
  #cmd{
    border-radius:12px;border:1px solid rgba(217,185,121,.3);
    background:linear-gradient(180deg,rgba(18,24,38,.98),rgba(7,10,18,.99));
    padding:9px 9px 6px;
  }
  .cmdhead{padding:0 2px 7px;border-bottom:1px solid rgba(217,185,121,.14);margin-bottom:7px;}
  .cmdhead .who{font-size:13px;letter-spacing:.12em;color:var(--goldhi);font-weight:600;}
  .cmdhead .hint{font-size:9.5px;color:var(--txt3);letter-spacing:.02em;}
  .cmdhead .cmdhelp{width:16px;height:16px;line-height:14px;font-size:10px;
    border-color:rgba(150,190,240,.35);color:#9fb6ce;}
  .cmdgrid{gap:6px;}
  .cmdbtn{
    min-height:46px;justify-content:center;gap:2px;padding:6px 9px;
    border-radius:8px;border:1px solid rgba(150,180,230,.2);
    background:linear-gradient(180deg,rgba(36,47,70,.95),rgba(14,20,33,.97));
  }
  .cmdbtn::before{width:0;}
  .cmdbtn.elb{border-left-width:3px!important;border-left-style:solid;}
  .cmdbtn.elb::before{width:3px;background:var(--cmd-c);opacity:.95;}
  .cmdbtn b{font-size:12.5px;letter-spacing:.05em;font-weight:600;}
  .cmdbtn span{font-size:9px;color:#93a9c6;letter-spacing:0;}
  .cmdbtn:active{filter:brightness(1.2);}
  .cmdbtn.lb{
    background:linear-gradient(180deg,rgba(120,88,26,.95),rgba(48,32,8,.98));
    border-color:rgba(255,215,120,.7);
  }

  /* ---- 结算 / 掉落 / 弹层 ---- */
  #result,#drop{background:radial-gradient(120% 80% at 50% 30%,rgba(16,24,40,.96),rgba(4,7,13,.99));}
  .rw{gap:9px;margin:14px 0 12px;}
  .rwcell{border-radius:10px;border-color:rgba(217,185,121,.22);}
  .rwcell .k{font-size:10px;letter-spacing:.16em;color:var(--txt3);}
  .rwcell .v{font-size:25px;letter-spacing:.02em;}
  .crow{border-radius:8px;border-color:rgba(255,255,255,.06);}
  .dcard{border-radius:12px;}
  .assign .abtn{border-radius:8px;}

  /* ---- 矮屏 / 横屏 ---- */
  @media (orientation:landscape),(max-height:640px){
    #title .tinner{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:10px 26px;
      padding-top:calc(env(safe-area-inset-top,0px) + 12px);}
    .tbrand{flex:0 0 100%;text-align:center;}
    #title h1{font-size:clamp(22px,5.6vh,30px);}
    .tkicker{display:none;}
    .tdivider{margin:8px auto 6px;}
    #title .lineup img{width:34px;height:34px;}
    .taction{width:auto;flex:0 0 auto;}
    .taction .btn{min-width:190px;padding:11px 26px;font-size:13.5px;}
    #prep .quick .btn{padding:10px 0;font-size:13px;}
  }


  /* ---- 详情页分组标题 / 资源行 ---- */
  .secttl{display:flex;align-items:center;gap:8px;width:100%;margin:16px 0 8px;
    font-size:10px;letter-spacing:.24em;color:var(--gold);text-align:left;}
  .secttl::before{content:"";width:5px;height:5px;flex:0 0 auto;transform:rotate(45deg);
    background:linear-gradient(135deg,#f7e8c2,#a9873f);box-shadow:0 0 6px rgba(217,185,121,.5);}
  .secttl::after{content:"";flex:1;height:1px;
    background:linear-gradient(90deg,rgba(217,185,121,.3),rgba(217,185,121,0));}
  .panel .matbar{display:flex;width:100%;margin:8px 0 0;justify-content:flex-start;}
  .panel .matbar > span{height:26px;padding:0 10px;font-size:10.5px;color:#b7c9e0;}
  .panel .setrow{text-align:left;font-size:10.5px;line-height:1.95;color:#9fb3ca;margin:6px 0 8px;}
  .panel .setrow b{color:var(--goldhi);font-weight:600;}
  .panel .statgrid{margin:8px 0 0;}
  .panel .gline{margin-bottom:6px;}
  .panel .gline .gname{font-size:12px;}
  .panel .gline .gmod{font-size:9.5px;color:#8ea3bd;}
  .panel > .btn{display:block;width:100%;margin-top:16px;padding:12px 0;font-size:13.5px;letter-spacing:.26em;}
  .panel .opsbtns,.panel .btn.ghost{width:100%;}
  .panel .gline .gb.up{font-size:9.5px;padding:4px 8px;}

  /* ---- 战斗：血条数值对齐 ---- */
  #party .bnum{font-variant-numeric:tabular-nums;}
  .bar .btag{text-shadow:0 1px 2px rgba(0,0,0,.9);}
  /* ---- 滚动条 ---- */
  .screen::-webkit-scrollbar{width:0;}


  /* ---- 详情页：裸文本区块卡片化 ---- */
  .panel > .setrow{
    padding:11px 12px;margin:7px 0 0;border-radius:9px;
    border:1px solid rgba(217,185,121,.14);
    background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
  }
  .panel > .setrow .gb{margin-top:2px;}
  .panel .setrow b{color:var(--goldhi);}
  .panel .gline{padding:9px 10px;}
  .panel .statcell{padding:7px 10px;}
  .panel .statcell .sk{font-size:9.5px;color:#94a9c3;letter-spacing:.06em;}


  /* ---- 角色卡：第二行结构 / 小屏适配 ---- */
  .hero .hname{padding-right:40px;font-size:13px;letter-spacing:.06em;overflow:hidden;text-overflow:ellipsis;display:block;}
  .hero .hjob{display:flex;align-items:center;gap:5px;padding-right:6px;margin-top:3px;overflow:hidden;}
  .hero .hjob .rolech{font-style:normal;font-size:8px;line-height:1.5;padding:0 3px;border-radius:3px;
    border:1px solid currentColor;color:var(--role);flex:0 0 auto;opacity:.92;}
  .hero .hjob .hjobtxt{font-size:9px;color:var(--txt3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hero .hstat{font-size:8.5px;color:#8296b2;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  @media (min-width:700px){.heros{grid-template-columns:repeat(3,minmax(0,1fr));width:min(820px,100%);}}
  @media (orientation:landscape){
    .heros{width:min(100%,940px);}
    #prep .inner{padding-top:calc(env(safe-area-inset-top,0px) + 8px);}
    .ptitle{font-size:16px;margin-bottom:2px;}
    .psub{margin-bottom:8px;}
    .matbar{margin-bottom:8px;}
    .heros{gap:6px;}
    .hero{padding:7px 8px 7px 10px;grid-template-columns:34px 1fr;gap:7px;}
    .hero img{width:34px;height:34px;}
    #prep .quick{padding:8px 2px calc(env(safe-area-inset-bottom,0px) + 6px);}
    #prep .quick .btn{padding:10px 0;font-size:13px;}
  }


  /* ---- 存档：当前槽位用弱化状态，不用主按钮色 ---- */
  .gb.now{background:rgba(217,185,121,.10);border:1px solid rgba(217,185,121,.4);
    color:var(--goldhi);opacity:.85;font-size:9.5px;padding:4px 8px;border-radius:8px;}
  .gline .gb{border-radius:7px;font-size:9.5px;padding:4px 8px;}
  .gline .gb.up{background:linear-gradient(180deg,#f4e5bc,#d2aa63);color:#20160a;border-color:transparent;}


  /* ---- 弹层面板：统一居中 + 内边距 ---- */
  #gear{
    display:flex;justify-content:center;align-items:flex-start;
    padding:calc(env(safe-area-inset-top,0px) + 16px) 3vw calc(env(safe-area-inset-bottom,0px) + 22px);
    background:radial-gradient(120% 80% at 50% 24%,rgba(14,21,36,.92),rgba(4,7,13,.97));
    backdrop-filter:blur(4px);
  }
  #gear .panel{width:min(430px,100%);margin:auto 0;}
  .panel .rsub{line-height:1.7;padding:0 6px;}
  .panel .rttl{display:block;text-align:center;}
  .panel .rsub{text-align:center;}


  /* ---- 掉落 / 分配：对比度与按钮主次 ---- */
  #drop .dcard{
    background:linear-gradient(100deg,rgba(32,43,64,.96),rgba(13,19,31,.98));
    border:1px solid rgba(150,185,230,.24);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 8px 22px rgba(0,0,0,.45);
  }
  #drop .dcard .dname{color:#f3f8ff;font-weight:600;}
  #drop .dcard .dmod{color:#b9cade;}
  #drop .dcard .dmod.attr{color:#dce9f8;}
  #drop .dcard .dslot{color:#e2eefb;border-color:rgba(150,200,255,.42);background:rgba(120,180,255,.12);}
  #drop .dcard.rar-rare{border-color:rgba(90,168,255,.6);}
  #drop .dcard.rar-epic{border-color:rgba(192,140,255,.66);}
  #drop .dcard.rar-legend{border-color:rgba(255,203,99,.8);}
  .assign{gap:7px;}
  .assign .abtn{display:flex;flex-direction:column;align-items:center;justify-content:center;
    min-height:56px;gap:4px;background:linear-gradient(180deg,rgba(30,40,58,.9),rgba(11,16,27,.96));
    border:1px solid rgba(150,185,230,.2);border-radius:9px;}
  .assign .abtn .an{font-size:12px;font-weight:600;color:#eaf3ff;letter-spacing:.04em;line-height:1.3;}
  .assign .abtn .as{font-size:9px;color:#93a7c0;line-height:1.3;}
  .assign .abtn:disabled{opacity:.34!important;background:rgba(255,255,255,.02);border-color:rgba(255,255,255,.08);}
  .assign .abtn:not(:disabled):active{border-color:rgba(217,185,121,.55);}
  .assignacts{display:flex;gap:8px;margin-top:14px;}
  .assignacts .btn{flex:1 1 0;width:auto!important;min-width:0;margin:0;
    padding:11px 6px;font-size:12.5px;letter-spacing:.1em;}
  .assignacts .btn.ghost{flex:0 0 auto;width:auto!important;padding:11px 14px;font-size:11.5px;}


  /* ---- 详情页：分组内的操作行 ---- */
  .panel > .setrow.opsrow{display:flex;align-items:center;justify-content:space-between;gap:10px;
    padding:9px 12px;margin-top:8px;}
  .panel > .setrow.opsrow > span{font-size:10px;color:#8ea3bd;letter-spacing:.04em;}
  .panel > .setrow.opsrow .gb{flex:0 0 auto;background:rgba(217,185,121,.12);
    border:1px solid rgba(217,185,121,.42);color:var(--goldhi);border-radius:7px;
    padding:5px 10px;font-size:10px;}
  .panel > .setrow.opsrow .gb:active{background:rgba(217,185,121,.22);}

  /* ================= v80 战斗演出层 ================= */
  #topbar{display:flex;align-items:center;gap:8px;}
  #topbar .stage-name{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;
    text-overflow:ellipsis;padding-left:14px;}
  .roundchip{flex:0 0 auto;font-size:9.5px;letter-spacing:.08em;color:var(--goldhi);
    border:1px solid rgba(217,185,121,.34);background:rgba(217,185,121,.10);
    border-radius:4px;padding:2px 6px;font-variant-numeric:tabular-nums;}
  #battleOps{flex:0 0 auto;}

  /* 连锁徽章：只在原位淡入，不位移 */
  #chainSlot{top:6px;height:auto;opacity:0;transition:opacity .16s linear;}
  #chainSlot.show{opacity:1;}
  .chainbox{display:inline-flex;align-items:center;gap:8px;padding:5px 11px;border-radius:6px;
    background:linear-gradient(180deg,rgba(16,23,38,.94),rgba(8,12,21,.96));
    border:1px solid rgba(150,190,240,.3);
    box-shadow:0 6px 18px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.08);}
  .chainbox.same{border-color:rgba(255,220,120,.62);
    box-shadow:0 6px 18px rgba(0,0,0,.5),0 0 18px rgba(255,200,90,.22),
      inset 0 1px 0 rgba(255,240,200,.16);}
  .chainlab{font-size:9.5px;letter-spacing:.16em;color:#9fb6ce;}
  .chainbox.same .chainlab{color:#ffd98a;}
  .chainmult{font-size:19px;font-weight:700;letter-spacing:.02em;color:#dcecff;
    font-variant-numeric:tabular-nums;text-shadow:0 0 14px rgba(120,190,255,.45);}
  .chainbox.same .chainmult{color:#ffe6a2;text-shadow:0 0 16px rgba(255,200,90,.6);}
  .chaindots{display:flex;gap:3px;}
  .chaindots i{width:5px;height:11px;border-radius:2px;background:rgba(255,255,255,.14);}
  .chaindots i.on{background:linear-gradient(180deg,#bfe4ff,#5aa8e0);
    box-shadow:0 0 6px rgba(120,200,255,.6);}
  .chainbox.same .chaindots i.on{background:linear-gradient(180deg,#ffe9b0,#e0a94a);
    box-shadow:0 0 7px rgba(255,200,90,.7);}

  /* 敌人：蓄力 / 终焉 的静止警示光 */
  .foe.charging .fhp{border-color:rgba(255,212,94,.85);
    box-shadow:0 0 12px rgba(255,200,80,.45),inset 0 1px 3px rgba(0,0,0,.9);}
  .foe.charging .fimg{filter:drop-shadow(0 0 14px rgba(255,205,90,.5));}
  .foe.phase3 .fhp{border-color:rgba(255,92,110,.9);
    box-shadow:0 0 14px rgba(255,70,90,.5),inset 0 1px 3px rgba(0,0,0,.9);}
  .foe.phase3 .fimg{filter:drop-shadow(0 0 16px rgba(255,70,90,.55));}
  .ftarget{letter-spacing:.14em;padding:1px 6px;}

  /* 队伍卡：已下指令 → 底部指令条 */
  #party .card.hasord{padding-bottom:16px;border-color:rgba(217,185,121,.42);}
  #party .card .ord{position:absolute;left:0;right:0;bottom:4px;top:auto;
    text-align:center;font-size:8px;line-height:1.3;letter-spacing:.06em;
    color:#f0d9a8;background:linear-gradient(90deg,rgba(217,185,121,0),
      rgba(217,185,121,.16),rgba(217,185,121,0));
    max-width:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}

  /* 指令按钮：MP 不足时仍可读，只是压暗 */
  .cmdbtn:disabled{opacity:1;}
  .cmdbtn.dim{filter:grayscale(.45) brightness(.62);}
  .cmdbtn.dim b{color:#a8b8cb;text-shadow:none;}
  .cmdbtn.dim span{color:#7d8ea4;}

  /* 引导 / 弹层按钮成行 */
  .btnrow{display:flex;gap:8px;margin-top:16px;width:100%;}
  .btnrow .btn{flex:1 1 0;width:auto!important;margin:0;padding:12px 0;
    font-size:13.5px;letter-spacing:.18em;}
  .btnrow .btn.ghost{flex:0 0 32%;letter-spacing:.1em;}

  /* 结算淡入（不位移） */
  @keyframes fadeIn{from{opacity:0}to{opacity:1}}
  #result .panel,#drop .panel{animation:fadeIn .22s ease-out;}

  /* ================= v81 数值可见性 ================= */
  /* 伤害飘字：主数字 + 因子标签 */
  .floatwrap{position:absolute;z-index:10;pointer-events:none;transform:translate(-50%,0);
    display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;
    animation:floatUp .98s cubic-bezier(.2,.7,.3,1) forwards;}
  .floatwrap .fmain{font-weight:800;font-size:24px;line-height:1.05;color:#fff;
    letter-spacing:.01em;text-shadow:0 2px 6px #000,0 0 14px rgba(120,200,255,.5);
    font-variant-numeric:tabular-nums;}
  .floatwrap.weak .fmain{color:#ffd45e;font-size:29px;
    text-shadow:0 2px 6px #000,0 0 18px rgba(255,190,60,.9);}
  .floatwrap.res .fmain{color:#a6b8d2;font-size:19px;}
  .floatwrap .ftags2{display:flex;flex-direction:column;align-items:center;gap:1px;}
  .floatwrap .ftags2 .t{font-size:8.5px;line-height:1.35;letter-spacing:.05em;
    padding:0 5px;border-radius:3px;color:#dbe7f7;white-space:nowrap;
    background:rgba(6,10,18,.78);border:1px solid rgba(255,255,255,.16);}
  .floatwrap .ftags2 .t.weak{color:#ffd98a;border-color:rgba(255,205,90,.55);}
  .floatwrap .ftags2 .t.res{color:#a6b8d2;}
  .floatwrap .ftags2 .t.chain{color:#a8d8ff;border-color:rgba(120,190,255,.45);}

  /* 常显连锁条：固定在左下，不做位移 */
  #chainHud{position:absolute;left:8px;bottom:8px;z-index:8;
    display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:5px;
    background:rgba(6,10,18,.72);border:1px solid rgba(150,190,240,.22);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.06);backdrop-filter:blur(3px);
    font-size:9px;letter-spacing:.1em;color:#9fb6ce;}
  #chainHud .chmult{font-size:13px;font-weight:700;color:#e4f1ff;letter-spacing:.02em;
    font-variant-numeric:tabular-nums;}
  #chainHud .chdots{display:flex;gap:2px;align-items:center;}
  #chainHud .chdots i{width:4px;height:9px;border-radius:1px;background:rgba(255,255,255,.16);}
  #chainHud .chdots i.on{background:var(--elc,#9fd0ff);box-shadow:0 0 5px var(--elc,#9fd0ff);}
  #chainHud .chelem{font-weight:600;letter-spacing:.06em;}

  /* 指令按钮：弱点目标时提示色 */
  .cmdbtn.wk span{color:#ffcf82;}
  .cmdbtn.wk b{color:#fff4da;}
  .cmdbtn span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}


  /* 指令按钮：预估数值单独成块，长名字也不会把它挤掉 */
  .cmdrow{display:flex;align-items:baseline;gap:4px;width:100%;overflow:hidden;}
  .cmdbtn .cmdrow .csub{flex:0 1 auto;min-width:0;font-size:9px;color:#93a9c6;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .cmdbtn .cmdrow .cpv{flex:0 0 auto;font-size:9.5px;font-weight:700;color:#dbe9fb;
    font-variant-numeric:tabular-nums;letter-spacing:0;}
  .cmdbtn.wk .cmdrow .cpv{color:#ffcf82;}
  .cmdbtn.dim .cmdrow .cpv{color:#8c9db2;}

  /* ================= v82 节奏信息 + 四席总览 ================= */
  /* 敌人 threatening 预估 */
  .fthreat{font-size:8.5px;line-height:1.45;letter-spacing:.05em;padding:0 5px;border-radius:3px;
    color:#c3d4e8;background:rgba(6,10,18,.8);border:1px solid rgba(150,190,240,.22);
    white-space:nowrap;font-variant-numeric:tabular-nums;}
  .fthreat.aoe{color:#ffcf82;border-color:rgba(255,200,110,.42);}
  .fthreat.charge{color:#ffe6a2;border-color:rgba(255,215,120,.55);
    background:rgba(46,34,10,.85);}
  .fthreat.danger{color:#ffb3bd;border-color:rgba(255,110,130,.6);background:rgba(52,12,20,.88);font-weight:600;}

  /* 四席出战总览 */
  #teamSlots{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;
    width:min(560px,100%);margin:0 0 10px;}
  .tslot{position:relative;display:flex;align-items:center;gap:6px;padding:6px 7px 6px 9px;
    border-radius:8px;overflow:hidden;cursor:pointer;
    background:linear-gradient(180deg,rgba(30,40,58,.9),rgba(11,16,27,.96));
    border:1px solid rgba(217,185,121,.22);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.06);}
  .tslot::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;
    background:var(--role,#7fb6ff);opacity:.85;}
  .tslot img{width:24px;height:24px;border-radius:5px;object-fit:cover;flex:0 0 auto;}
  .tslot .tinfo{flex:1;min-width:0;}
  .tslot .tname{font-size:10.5px;font-weight:600;color:#eaf3ff;letter-spacing:.04em;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.35;}
  .tslot .tjob{font-size:8px;color:var(--txt3);line-height:1.35;white-space:nowrap;overflow:hidden;}
  .tslot .tord{position:absolute;right:3px;top:2px;font-size:7px;color:rgba(255,255,255,.28);
    font-variant-numeric:tabular-nums;}
  .tslot.empty{border-style:dashed;border-color:rgba(255,255,255,.14);
    background:rgba(255,255,255,.02);cursor:default;}
  .tslot.empty::before{display:none;}
  .tslot .tplus{width:24px;height:24px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
    border-radius:5px;border:1px dashed rgba(255,255,255,.2);color:#67788e;font-size:13px;line-height:1;}
  .tslot .tname.empty{color:#7c8ca2;font-weight:500;}
  @media (max-width:380px){
    #teamSlots{gap:4px;}
    .tslot{padding:5px 5px 5px 7px;gap:4px;}
    .tslot img,.tslot .tplus{width:20px;height:20px;}
    .tslot .tname{font-size:9.5px;}
    .tslot .tjob{font-size:7.5px;}
  }
  @media (orientation:landscape){
    #teamSlots{margin-bottom:8px;}
    .tslot{padding:4px 6px 4px 8px;}
  }

  /* ================= v83 细节收口 ================= */
  /* 无尽塔 / 结算 面板数字与行距 */
  .rlines{gap:6px;margin-bottom:16px;}
  .rline{font-size:11.5px;line-height:1.75;padding-bottom:6px;}
  .rline.up{color:#ffd98a;}
  .rline.dim{color:#7f93b3;}
  /* 战斗：顶部操作按钮命中区加大一点 */
  .opbtn{padding:4px 10px;min-height:24px;display:inline-flex;align-items:center;}
  /* 敌人威胁与名字的间距收紧，避免把立绘往下压 */
  .foe .fthreat{margin-top:1px;}
  .foe .ftags{gap:4px;}
  /* 编队：四席总览与标题之间的呼吸 */
  #teamSlots{margin-top:2px;}
  /* 小屏：指令区两列按钮的最小高度略降，避免溢出 */
  @media (max-height:700px){
    #cmdSlot{height:clamp(140px,29vh,190px);}
    .cmdbtn{min-height:42px;}
  }

  /* ================= v84 复盘 + 一键换装 ================= */
  #toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 74px);
    transform:translateX(-50%);z-index:200;pointer-events:none;
    padding:8px 14px;border-radius:6px;font-size:11.5px;letter-spacing:.06em;
    color:#f6ecd2;background:rgba(10,15,26,.94);border:1px solid rgba(217,185,121,.42);
    box-shadow:0 10px 26px rgba(0,0,0,.55);
    opacity:0;transition:opacity .18s linear;white-space:nowrap;max-width:86vw;}
  #toast.show{opacity:1;}

  .revsum{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:10px 0 12px;}
  .revcell{padding:8px 6px;border-radius:8px;text-align:center;
    background:rgba(255,255,255,.045);border:1px solid rgba(217,185,121,.16);}
  .revcell .k{font-size:9px;letter-spacing:.12em;color:var(--txt3);margin-bottom:3px;}
  .revcell .v{font-size:17px;font-weight:700;color:#eaf3ff;line-height:1.15;
    font-variant-numeric:tabular-nums;}
  .revlist{display:flex;flex-direction:column;gap:5px;max-height:44vh;overflow-y:auto;
    padding-right:2px;}
  .revlist::-webkit-scrollbar{width:0;}
  .revrow{display:flex;align-items:center;gap:6px;font-size:11px;padding:7px 9px;
    border-radius:7px;background:rgba(255,255,255,.045);
    border:1px solid rgba(255,255,255,.07);border-left-width:2px;}
  .revrow.hero{border-left-color:rgba(120,200,255,.55);}
  .revrow.enemy{border-left-color:rgba(255,110,130,.55);}
  .revrow .rvwho{color:#e2eefb;font-weight:600;max-width:58px;flex:0 0 auto;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .revrow .rvact{color:#93a7c0;flex:0 0 auto;font-size:10px;}
  .revrow .rvto{color:#7f93ab;flex:1 1 auto;min-width:0;font-size:10px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .revrow .rvdmg{flex:0 0 auto;font-weight:700;color:#fff;font-variant-numeric:tabular-nums;}
  .revrow.enemy .rvdmg{color:#ff9aa6;}
  .revrow .rvtag{flex:0 0 auto;font-size:8px;line-height:1.5;padding:0 4px;border-radius:3px;
    color:#a8b9cd;border:1px solid rgba(255,255,255,.16);white-space:nowrap;}
  .revrow .rvtag.weak{color:#ffd98a;border-color:rgba(255,205,90,.5);}
  .revrow .rvtag.chain{color:#a8d8ff;border-color:rgba(120,190,255,.45);}
  .revrow .rvtag.guard{color:#9fd0ff;border-color:rgba(120,190,255,.5);}


  /* ---- 顶栏四按钮拥挤：收紧操作区，给关卡名留空间 ---- */
  #topbar .stage-name{font-size:12px;letter-spacing:.08em;padding-left:13px;}
  .roundchip{font-size:9px;padding:1px 5px;letter-spacing:.04em;}
  #battleOps{gap:4px;}
  .opbtn{font-size:9.5px;padding:3px 7px;letter-spacing:.04em;}
  @media (max-width:374px){
    .opbtn{font-size:9px;padding:3px 6px;}
    #topbar .stage-name{font-size:11px;letter-spacing:.04em;}
    .roundchip{font-size:8.5px;padding:1px 4px;}
  }


  /* ---- 指令头：换目标更划算的提示 ---- */
  .cmdhead{gap:6px;}
  .cmdhead .hint{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .cmdtip{flex:0 0 auto;font-size:8.5px;line-height:1.5;letter-spacing:.02em;
    padding:0 5px;border-radius:3px;color:#ffd98a;
    background:rgba(217,185,121,.12);border:1px solid rgba(217,185,121,.42);
    font-variant-numeric:tabular-nums;}


  /* ---- 仓库：批量分解为明确的次级危险操作 ---- */
  .bulkhint{width:100%;text-align:left;font-size:9px;color:#7f8ea6;
    letter-spacing:.04em;margin:14px 0 6px;}
  .panel > .btn.warn{
    width:100%;display:block;padding:11px 0;font-size:12px;letter-spacing:.08em;
    color:#ffc2c8;background:linear-gradient(180deg,rgba(58,16,24,.9),rgba(28,8,14,.95));
    border:1px solid rgba(255,110,130,.5);border-radius:8px;
    box-shadow:inset 0 1px 0 rgba(255,180,190,.14),0 6px 16px rgba(0,0,0,.4);
  }
  .panel > .btn.warn:active{background:linear-gradient(180deg,rgba(78,22,32,.92),rgba(36,10,18,.96));}


  /* ---- 图鉴：按层筛选条 ---- */
  .codexfilter{margin:10px 0 12px;}
  .codexfilter .diffbtn{font-size:10.5px;padding:7px 0;letter-spacing:0;}
