/* ============================================================
   富邦陪跑 · Liquid Glass 视觉层（手机端 + PC 后台共用）
   零依赖，离线可用。在原有样式之后加载，作为统一外观令牌与组件库。
   ============================================================ */
@property --lg-ang{syntax:'<angle>';initial-value:0deg;inherits:false}
:root{
  --lg-bg0:#5f6dc4;--lg-bg1:#b3bcee;
  --lg-b1:#6d4df2;--lg-b2:#3f8ff0;--lg-b3:#f06ec0;--lg-gold:#ffe0b0;
  --lg-ink:#ffffff;--lg-ink2:rgba(255,255,255,.93);--lg-ink3:rgba(255,255,255,.76);
  --lg-glass:linear-gradient(150deg,rgba(150,140,248,.6),rgba(112,122,232,.42));
  --lg-glass-soft:linear-gradient(150deg,rgba(160,152,252,.42),rgba(120,130,236,.3));
  --lg-brd:rgba(255,255,255,.42);
  --lg-shadow:0 18px 34px -18px rgba(70,50,160,.6);
  --lg-hi:inset 0 1px 0 rgba(255,255,255,.55),inset 0 -1px 0 rgba(255,255,255,.16);
  --lg-num:'Bahnschrift','DIN Alternate','Segoe UI',sans-serif;
  --lg-ease:cubic-bezier(.22,1,.36,1);
}
@keyframes lgFlux{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
@keyframes lgSpinAngle{to{--lg-ang:360deg}}
@keyframes lgSpin{to{transform:rotate(360deg)}}
@keyframes lgShine{60%,100%{transform:translateX(110%)}}
@keyframes lgDrift{0%{transform:translate3d(-3%,-2%,0) scale(1) rotate(0)}50%{transform:translate3d(4%,3%,0) scale(1.12) rotate(6deg)}100%{transform:translate3d(-2%,4%,0) scale(1.05) rotate(-4deg)}}
@keyframes lgPing{to{transform:scale(2.1);opacity:0}}
@keyframes lgBob{50%{transform:translateX(-50%) translateY(-6px)}}
@keyframes lgPulse{50%{box-shadow:0 0 26px -2px var(--lg-b1)}}

/* ---------- 背景：薰衣草底 + 流体光斑 + 粒子画布 ---------- */
body{background:var(--lg-bg0)!important;color:var(--lg-ink)!important}
body::before{
  content:'';position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:radial-gradient(120% 80% at 50% -10%,var(--lg-bg1),var(--lg-bg0) 72%);
}
/* 底层晕染：静态铺色，不再整体同步漂移（动态交给 #lg-mist 异步分层） */
body::after{
  content:'';position:fixed;inset:-18%;z-index:-1;pointer-events:none;opacity:.34;
  background:
    radial-gradient(28% 32% at 16% 20%,var(--lg-b1),transparent 62%),
    radial-gradient(32% 36% at 82% 14%,var(--lg-b2),transparent 62%),
    radial-gradient(36% 32% at 64% 84%,var(--lg-b3),transparent 60%),
    radial-gradient(26% 28% at 30% 74%,var(--lg-b2),transparent 65%);
  filter:blur(80px) saturate(185%);
}
/* ---------- 云雾水汽：多层异步漂移（每层颜色/速度/方向/明暗都不同） ---------- */
/* 2026-10-29 v25：关键帧加入 opacity 呼吸（合成器动画，零重绘），漂移提速，
   呈现"流动水雾"的异步渐变——每团雾颜色、路径、快慢、明暗起伏均不一致。 */
@keyframes lgMistA{0%{transform:translate3d(-6vw,4vh,0) scale(1);opacity:.5}45%{transform:translate3d(16vw,-6vh,0) scale(1.28);opacity:.68}100%{transform:translate3d(34vw,8vh,0) scale(1.06);opacity:.42}}
@keyframes lgMistB{0%{transform:translate3d(8vw,-10vh,0) scale(1.18);opacity:.44}50%{transform:translate3d(-14vw,12vh,0) scale(.92);opacity:.3}100%{transform:translate3d(-32vw,-4vh,0) scale(1.22);opacity:.58}}
@keyframes lgMistC{0%{transform:translate3d(-10vw,14vh,0) scale(1.05);opacity:.4}40%{transform:translate3d(12vw,-12vh,0) scale(1.3);opacity:.26}100%{transform:translate3d(26vw,10vh,0) scale(.96);opacity:.52}}
@keyframes lgMistD{0%{transform:translate3d(20vw,8vh,0) scale(1.1);opacity:.38}55%{transform:translate3d(-8vw,-14vh,0) scale(1.24);opacity:.2}100%{transform:translate3d(-24vw,12vh,0) scale(1.02);opacity:.5}}
@keyframes lgMistE{0%{transform:translate3d(0vw,-16vh,0) scale(.98);opacity:.3}50%{transform:translate3d(-20vw,6vh,0) scale(1.26);opacity:.16}100%{transform:translate3d(14vw,16vh,0) scale(1.12);opacity:.4}}
@keyframes lgMistF{0%{transform:translate3d(-16vw,0vh,0) scale(1.16);opacity:.34}45%{transform:translate3d(6vw,16vh,0) scale(.9);opacity:.2}100%{transform:translate3d(22vw,-10vh,0) scale(1.2);opacity:.46}}
@keyframes lgFog{0%{background-position:0% 40%;transform:scale(1.15);opacity:.5}50%{background-position:100% 60%;transform:scale(1.32);opacity:.32}100%{background-position:0% 40%;transform:scale(1.15);opacity:.5}}
@keyframes lgFog2{0%{background-position:100% 60%;transform:scale(1.28);opacity:.34}50%{background-position:0% 30%;transform:scale(1.12);opacity:.5}100%{background-position:100% 60%;transform:scale(1.28);opacity:.34}}
#lg-mist{
  position:fixed;inset:-30%;z-index:-1;pointer-events:none;overflow:hidden;
  filter:blur(74px) saturate(165%);
  -webkit-mask-image:radial-gradient(140% 120% at 50% 45%,#000 62%,transparent 100%);
  mask-image:radial-gradient(140% 120% at 50% 45%,#000 62%,transparent 100%);
}
#lg-mist i{position:absolute;display:block;border-radius:50%;mix-blend-mode:screen;will-change:transform,opacity}
/* 每团雾 = 双色渐变核（非单色），路径/时长各异 → 异步流动水雾 */
#lg-mist i:nth-child(1){width:58%;height:46%;left:-6%;top:4%;opacity:.5;
  background:radial-gradient(closest-side,var(--lg-b1),var(--lg-b2) 55%,transparent 74%);animation:lgMistA 44s ease-in-out infinite alternate}
#lg-mist i:nth-child(2){width:52%;height:40%;right:-8%;top:10%;opacity:.44;
  background:radial-gradient(closest-side,var(--lg-b2),var(--lg-b3) 52%,transparent 72%);animation:lgMistB 57s ease-in-out infinite alternate}
#lg-mist i:nth-child(3){width:64%;height:44%;left:18%;bottom:-8%;opacity:.4;
  background:radial-gradient(closest-side,var(--lg-b3),var(--lg-b1) 58%,transparent 72%);animation:lgMistC 66s ease-in-out infinite alternate}
#lg-mist i:nth-child(4){width:44%;height:38%;right:6%;bottom:2%;opacity:.38;
  background:radial-gradient(closest-side,var(--lg-gold),var(--lg-b2) 50%,transparent 72%);animation:lgMistD 50s ease-in-out infinite alternate}
#lg-mist i:nth-child(5){width:70%;height:52%;left:-14%;bottom:-6%;opacity:.3;
  background:radial-gradient(closest-side,var(--lg-b2),var(--lg-b3) 60%,transparent 76%);animation:lgMistE 83s ease-in-out infinite alternate}
#lg-mist i:nth-child(6){width:48%;height:42%;left:36%;top:-12%;opacity:.34;
  background:radial-gradient(closest-side,var(--lg-b1),var(--lg-gold) 56%,transparent 74%);animation:lgMistF 62s ease-in-out infinite alternate}
/* 水汽纹理：两层不同频率噪声反向缓慢流动，形成朦胧雾感 */
#lg-mist .mist-fog{
  position:absolute;inset:0;mix-blend-mode:soft-light;opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='420' height='420'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.0065 0.013' numOctaves='4' seed='9'/%3E%3CfeGaussianBlur stdDeviation='2.2'/%3E%3C/filter%3E%3Crect width='420' height='420' filter='url(%23f)' opacity='0.6'/%3E%3C/svg%3E");
  background-size:190% 190%;animation:lgFog 68s ease-in-out infinite;
}
#lg-mist .mist-fog.f2{
  opacity:.34;background-size:130% 130%;animation:lgFog2 92s ease-in-out infinite;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='360' height='360'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.011 0.008' numOctaves='5' seed='23'/%3E%3CfeGaussianBlur stdDeviation='1.4'/%3E%3C/filter%3E%3Crect width='360' height='360' filter='url(%23g)' opacity='0.55'/%3E%3C/svg%3E");
}
@media (prefers-reduced-motion:reduce){
  #lg-mist i,#lg-mist .mist-fog{animation:none!important}
}
#lg-fx{position:fixed;inset:0;z-index:0;pointer-events:none}
body.lg-nofx::after{animation:none}
body.lg-nofx #lg-fx,body.lg-nofx #lg-mist{display:none}
/* 弱机自动降级（FPS 看门狗 v33 触发 body.lg-lite）：不再"一刀切变静态"，
   只关掉额外的合成层与 canvas 粒子，保留云雾漂移（纯 transform/opacity）——
   弱机依然有呼吸感，不会回到"全静止"。 */
body.lg-lite #lg-fx{display:none!important}
body.lg-lite #lg-mist::before,body.lg-lite #lg-mist::after,body.lg-lite #lg-mist .mist-sweep{display:none!important}
body.lg-lite #lg-mist i:nth-child(n+4){display:none}
body.lg-lite #lg-mist i:nth-child(1){animation-duration:38s}
body.lg-lite #lg-mist i:nth-child(2){animation-duration:46s}
body.lg-lite #lg-mist i:nth-child(3){animation-duration:42s}
body.lg-lite .lg-hero-title em{animation:none!important}
body.lg-lite .hero,body.lg-lite .robot-fab{animation:none!important}
/* 2026-10-29 v25：移动端减负后恢复流动感——4 团双色雾 + 1 层水汽，
   transform/opacity 均为合成器动画（无滤镜、无 backdrop-filter），零逐帧重绘，
   闪烁根治成果不受影响；时长进一步错开，异步感更强。 */
@media (max-width:820px){
  #lg-mist i:nth-child(n+4){display:none}
  #lg-mist .mist-fog.f2{display:none}
  #lg-mist i:nth-child(1){animation-duration:32s}
  #lg-mist i:nth-child(2){animation-duration:41s}
  #lg-mist i:nth-child(3){animation-duration:37s}
  /* 2026-10-29 v30 根治闪烁：mask + mix-blend-mode 叠加会让整个云雾层每帧重新合成
     （遮罩需在混合结果上再算一遍），是真机闪烁/黑闪的典型来源；渐变本身已足够柔和。 */
  #lg-mist{-webkit-mask-image:none!important;mask-image:none!important}
  #lg-mist i,#lg-mist .mist-fog{mix-blend-mode:normal!important}
  /* 噪声层不再做 background-position 动画（每帧重采样整张位图），保留静态雾感 */
  #lg-mist .mist-fog{animation:none!important;opacity:.3}
  #lg-mist i{will-change:transform,opacity}
  /* background-position 动画每帧重绘元素，移动端停用 */
  .btn.primary,.btn-primary,.quick-actions .btn:first-child,.bottom button.active,
  .lg-hero-title em,.hero{animation:none!important}
  /* 渐变文字/按钮静态化后保持色彩饱满 */
  .lg-hero-title em{background-position:40% 50%!important}
}
/* 2026-10-29 移动端根治闪烁（二次减负后真机仍闪，改为彻底移除逐帧重绘源）：
   ① 全量禁用 backdrop-filter——底层是持续动画的云雾+粒子，真机 GPU 每帧为每张卡片
      重新采样全屏模糊，是内容闪烁的直接元凶；静态玻璃渐变观感几乎一致、开销归零。
   ② #lg-mist 去掉 blur 滤镜——径向渐变本身即柔和，46px 父级滤镜每帧重栅格化
      160% 视口大小的层是第二大开销。
   ③ 翻转卡 .lg-card::before 的圆锥渐变描边停止旋转（lgSpinAngle 驱动自定义属性，
      每帧整卡重绘）；保留静态高光描边。 */
@media (max-width:820px){
  *,*::before,*::after{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  #lg-mist{filter:none}
  .lg-card::before{animation:none}
  /* 补偿玻璃不透明度：blur 移除后稍微加实，保证文字可读性 */
  .card,.work-card,.task-row,.meeting-card,.class-title,.profile-card,.org-entry,
  .ledger-fold,.notice,.round-goal,.archive-link,.list-tools,.date-tile,.stat-cell,
  .hero-total,.hero-round,.ui-card,.stat-card,.panel,.class-card,.task-card,.report-card,
  .article-card,.table-panel,.config-panel,.config-menu,.person-card,.honor-card,
  .class-mini,.todo-item,.lg-card{
    background:linear-gradient(150deg,rgba(152,142,250,.8),rgba(112,122,232,.64))!important;
  }
  .bottom{background:linear-gradient(150deg,rgba(150,140,248,.86),rgba(112,122,232,.72))!important}
  .sheet,.modal{background:linear-gradient(150deg,rgba(140,132,240,.96),rgba(105,115,215,.96))!important}
}
#mobile-app,#app{position:relative;z-index:1}
.mobile-shell,.page{background:transparent!important;min-height:100dvh!important}
/* 后台主内容区透出液态玻璃底色，不被主题层的近白色 canvas 覆盖 */
.shell,.main-shell,.main-shell>.content{background:transparent!important;min-height:0!important}

/* ---------- 浅色兜底元素统一为液态玻璃风格（2026-10-29） ----------
   refinements.css 中一批元素用 var(--soft,#f6f7fb) 浅色兜底，在玻璃卡片内
   继承白色文字 → 白底白字看不清（荣誉三格、分类积分、组委成员等）。统一改玻璃风格。 */
.honor-entry,.cat-item,.officer,.org-member,.ui-ident{
  background:rgba(255,255,255,.14)!important;border:1px solid rgba(255,255,255,.3)!important;
  color:#fff!important;
}
.honor-entry svg{color:var(--lg-gold)!important}
.honor-entry span{color:#fff!important;text-shadow:0 1px 8px rgba(56,32,130,.3)}
.class-meta span{background:rgba(255,255,255,.14)!important;color:rgba(255,255,255,.92)!important}
.bar{background:rgba(255,255,255,.22)!important}

/* ---------- 成员业绩进度卡（组/战队/班级视角） ---------- */
.mgm-card .mgm-group{margin-bottom:4px}
.mgm-card .mgm-group:last-child{margin-bottom:0}
.mgm-group-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:10px 2px 6px;
  border-bottom:1px dashed var(--lg-brd);margin-bottom:6px}
.mgm-group-head b{font-size:13.5px;color:var(--lg-gold);letter-spacing:.02em}
.mgm-group-head span{font-size:11px;color:var(--lg-ink2);white-space:nowrap}
.mgm-row{padding:8px 2px 10px;border-bottom:1px solid rgba(255,255,255,.06)}
.mgm-row:last-child{border-bottom:0;padding-bottom:2px}
.mgm-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:5px}
.mgm-name{font-size:13.5px;font-weight:600;display:flex;align-items:center;gap:6px;min-width:0}
.mgm-name em{font-style:normal;font-size:10px;font-weight:500;padding:1px 7px;border-radius:8px;flex:none;
  background:linear-gradient(135deg,rgba(240,192,96,.22),rgba(240,192,96,.1));color:var(--lg-gold);border:1px solid rgba(240,192,96,.3)}
.mgm-pct{font-size:13px;font-weight:700;color:#eaf0ff;font-variant-numeric:tabular-nums;flex:none}
.mgm-sub{font-size:11.5px;color:var(--lg-ink2);margin-top:4px}
.mgm-sub small{opacity:.72}

/* ---------- 玻璃卡片（现有元素统一升级） ---------- */
.card,.work-card,.task-row,.meeting-card,.class-title,.profile-card,.org-entry,
.ledger-fold,.notice,.round-goal,.archive-link,.list-tools,.date-tile,.stat-cell,
.hero-total,.hero-round,.ui-card,.stat-card,.panel,.class-card,.task-card,.report-card,
.article-card,.table-panel,.config-panel,.config-menu,.person-card,.honor-card,
.class-mini,.todo-item,.modal,.sheet{
  background:var(--lg-glass)!important;
  border:1px solid var(--lg-brd)!important;
  backdrop-filter:blur(16px) saturate(160%)!important;
  -webkit-backdrop-filter:blur(16px) saturate(160%)!important;
  box-shadow:var(--lg-hi),var(--lg-shadow)!important;
  color:var(--lg-ink)!important;
}
.ui-card,.card,.panel,.stat-card{border-radius:24px!important}
.task-row,.meeting-card,.todo-item{border-radius:18px!important}
/* 今日任务三张卡片高度统一（抵消全局 first/last-child 的 padding 归零规则） */
.ui-tasks .task-row{padding-top:16px!important;padding-bottom:16px!important;min-height:81px}
.list-tools,.notice,.ledger-fold,.org-entry{border-radius:16px!important}
.card:hover,.ui-card:hover{box-shadow:var(--lg-hi),0 22px 40px -18px rgba(70,50,160,.72)!important}

/* 文字层级 */
.card h3,.card h2,.card strong,.work-card h3,.task-row h3,.meeting-card h3,
.class-title h2,.profile-card h2,.org-entry strong,.ui-card h3,.ui-card h2,
.panel h2,.stat-card h3,.class-card h2,.task-card h3,.report-card h3,.article-card h3,
.config-panel h2,.modal-header h2,.page-head h1,.section-head h2,.ui-head .ui-slogan{
  color:var(--lg-ink)!important;text-shadow:0 1px 12px rgba(56,32,130,.28);
}
.card p,.card small,.card span,.work-card p,.task-row p,.meeting-card p,
.class-title p,.profile-card p,.org-entry small,.date-tile b,.date-tile span,
.panel p,.panel small,.stat-card p,.class-card p,.task-card p,.report-card p,
.article-card p,.config-panel>p,.modal-header p,.page-head p,.ui-card small,
.ui-card .goal-sub,.ui-card .goal-title,.grow-item span,.class-meta,.list-tools small{
  color:var(--lg-ink2)!important;
}
.card .row-main p,.card .row-main small,.rank-row p,.rank-value small,
.stat-foot,.stat-top,.breadcrumb,.side-foot,.nav-section,.class-sub,
.grow-item span,.ui-ident small,.ui-round,.ui-class{color:var(--lg-ink2)!important}
.empty{color:var(--lg-ink3)!important}.empty h3{color:var(--lg-ink2)!important}
.text-link,.section-head button{color:#e6dcff!important}

/* 数字 */
.stat-number,.rank-value,.amount,.goal-num,.grow-item b,.ac-num{
  font-family:var(--lg-num)!important;color:#fff!important;
  font-variant-numeric:tabular-nums;text-shadow:0 2px 14px rgba(56,32,130,.45);
}
.rank-value small{font-family:inherit;text-shadow:none}

/* ---------- 按钮 / 标签 / 输入 ---------- */
.btn{
  background:rgba(255,255,255,.16)!important;border:1px solid rgba(255,255,255,.34)!important;
  color:#fff!important;border-radius:999px!important;transition:.25s var(--lg-ease);
}
.btn:hover{transform:translateY(-1px);background:rgba(255,255,255,.24)!important}
.btn.primary,.btn-primary,.quick-actions .btn:first-child{
  background:linear-gradient(100deg,var(--lg-b1),var(--lg-b2),var(--lg-b3),var(--lg-b1))!important;
  background-size:280% 100%!important;animation:lgFlux 9s ease-in-out infinite;
  border:none!important;color:#fff!important;
  box-shadow:0 10px 24px -10px var(--lg-b1),inset 0 1px 0 rgba(255,255,255,.35)!important;
}
.tag{background:rgba(255,224,176,.24)!important;color:var(--lg-gold)!important;
  border:1px solid rgba(255,224,176,.4)!important;border-radius:9px}
.tag.warn{background:rgba(255,224,176,.26)!important;color:var(--lg-gold)!important}
.tag.red,.status.red{background:rgba(240,110,192,.24)!important;color:#ffc2e6!important}
.tag.gray,.tag.mute{background:rgba(255,255,255,.14)!important;color:var(--lg-ink2)!important}
.tag.done,.status{background:rgba(255,255,255,.18)!important;color:#fff!important;border:1px solid rgba(255,255,255,.3)!important}
.status.warning{background:rgba(255,224,176,.24)!important;color:var(--lg-gold)!important}
input,select,textarea,.search{
  background:rgba(255,255,255,.16)!important;border:1px solid rgba(255,255,255,.34)!important;
  color:#fff!important;border-radius:14px!important;
}
input::placeholder,textarea::placeholder{color:rgba(255,255,255,.6)!important}
input:focus,select:focus,textarea:focus{outline:none;border-color:rgba(255,255,255,.7)!important;
  box-shadow:0 0 0 3px rgba(255,255,255,.14)!important}
select option{color:#2a2350;background:#e8eaff}
table th{background:rgba(255,255,255,.12)!important;color:#f4f2ff!important}
table td{color:#fff!important;border-bottom:1px solid rgba(255,255,255,.14)!important}
table tbody tr:hover{background:rgba(255,255,255,.08)!important}

/* ---------- 进度条：渐变 + 流光 ---------- */
.progress,.bar{background:rgba(255,255,255,.2)!important;border-radius:99px!important;overflow:hidden;
  border:1px solid rgba(255,255,255,.24)!important;height:9px!important}
.progress span,.bar>i{
  display:block;height:100%;border-radius:99px;position:relative;
  background:linear-gradient(90deg,var(--lg-b2),var(--lg-b1) 55%,var(--lg-b3))!important;
  background-size:200% 100%!important;
  box-shadow:0 0 14px rgba(109,77,242,.55);
  transition:width 1.2s var(--lg-ease);
}
.bar>i::after,.progress span::after{
  content:'';position:absolute;inset:0;border-radius:99px;
  background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.8) 48%,transparent 72%);
  transform:translateX(-110%);animation:lgShine 2.8s var(--lg-ease) infinite;
}

/* ---------- 手机端顶部与导航 ---------- */
.top{color:#fff!important}.brand b{color:#fff!important}.brand small{color:rgba(255,255,255,.78)!important}
.brand-mark{background:linear-gradient(135deg,var(--lg-b1),var(--lg-b2))!important;color:#fff!important;border:none!important}
.icon-btn,.appearance-trigger{
  background:rgba(255,255,255,.18)!important;border:1px solid rgba(255,255,255,.34)!important;
  color:#fff!important;backdrop-filter:blur(16px);
}
.eyebrow{color:#4a2fd0!important;letter-spacing:.2em}
.greeting h1,.page-heading h1{color:#fff!important;text-shadow:0 2px 18px rgba(56,32,130,.35)}
.greeting p,.page-heading p{color:var(--lg-ink2)!important}
.class-select{background:rgba(255,255,255,.18)!important;color:#fff!important;
  border:1px solid rgba(255,255,255,.34)!important;border-radius:14px!important}
.ui-class,.ui-round{color:var(--lg-ink2)!important}
.role-chip,.chip{background:rgba(255,255,255,.18)!important;color:#fff!important;border:1px solid rgba(255,255,255,.3)!important}
.bottom{
  position:fixed!important;left:16px;right:16px;bottom:16px!important;top:auto!important;
  transform:none!important;max-width:488px;margin:0 auto;width:auto!important;
  height:64px!important;display:flex!important;align-items:center!important;
  background:linear-gradient(150deg,rgba(150,140,248,.75),rgba(112,122,232,.6))!important;
  backdrop-filter:blur(30px) saturate(190%)!important;-webkit-backdrop-filter:blur(30px) saturate(190%)!important;
  border-radius:32px!important;border:1px solid rgba(255,255,255,.5)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 16px 38px rgba(40,25,100,.5)!important;
  padding:0 8px!important;z-index:60!important;
}
.bottom button{flex:1!important;height:48px!important;background:none!important;border:none!important;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  color:rgba(255,255,255,.8)!important;position:relative;border-radius:18px!important;margin:0 2px}
.bottom button .ico{width:22px;height:22px;stroke-width:1.6}
.bottom button span{font-size:10px;font-weight:500}
.bottom button.active{
  background:linear-gradient(120deg,var(--lg-b1),var(--lg-b2),var(--lg-b1))!important;
  background-size:220% 100%!important;animation:lgFlux 9s ease-in-out infinite;
  color:#fff!important;box-shadow:0 8px 20px -8px var(--lg-b1),inset 0 1px 0 rgba(255,255,255,.35)!important;
}
.bottom button.active::after{display:none!important}
.robot-fab{
  background:linear-gradient(140deg,var(--lg-b1),var(--lg-b2))!important;
  border:2px solid rgba(255,255,255,.55)!important;
  box-shadow:0 12px 26px -8px var(--lg-b1),inset 0 1px 0 rgba(255,255,255,.45)!important;
}
.robot-fab .robot-ring{border-color:rgba(255,255,255,.5)!important}
main.page{padding-bottom:120px!important}

/* ---------- PC 后台 ---------- */
.sidebar{
  background:linear-gradient(180deg,rgba(110,95,215,.55),rgba(95,109,196,.45))!important;
  border-right:1px solid rgba(255,255,255,.3)!important;
  backdrop-filter:blur(26px) saturate(180%)!important;
}
.brand-name{color:#fff!important}.brand-sub{color:rgba(255,255,255,.75)!important}
.nav-item{color:#f1efff!important;border-radius:14px!important}
.nav-item:hover{background:rgba(255,255,255,.14)!important;color:#fff!important}
.nav-item.active{
  background:linear-gradient(120deg,var(--lg-b1),var(--lg-b2))!important;color:#fff!important;
  box-shadow:0 8px 20px -10px var(--lg-b1),inset 0 1px 0 rgba(255,255,255,.3)!important;
}
.workspace-pill{background:rgba(255,255,255,.16)!important;color:#fff!important;border:1px solid rgba(255,255,255,.3)!important}
.topbar{background:rgba(150,140,248,.35)!important;border-bottom:1px solid rgba(255,255,255,.28)!important;
  backdrop-filter:blur(26px) saturate(180%)!important}
.breadcrumb{color:var(--lg-ink2)!important}.breadcrumb strong{color:#fff!important}
.topbar-select{background:rgba(255,255,255,.18)!important;color:#fff!important;border:1px solid rgba(255,255,255,.3)!important}
.profile-info{color:#fff!important}.profile-info small{color:var(--lg-ink2)!important}
.avatar{background:linear-gradient(135deg,var(--lg-b1),var(--lg-b2))!important;color:#fff!important}
.avatar.gold{background:linear-gradient(135deg,var(--lg-gold),#d9a05b)!important}
.date-pill{background:rgba(255,255,255,.16)!important;color:#fff!important;border:1px solid rgba(255,255,255,.3)!important}
.hero{
  background:linear-gradient(120deg,rgba(150,120,245,.75),rgba(109,77,242,.55),rgba(63,143,240,.5))!important;
  background-size:200% 100%!important;animation:lgFlux 14s ease-in-out infinite;
  border:1px solid rgba(255,255,255,.42)!important;border-radius:26px!important;
  box-shadow:var(--lg-hi),var(--lg-shadow)!important;overflow:hidden;position:relative;
}
.hero h2{color:#fff!important;text-shadow:0 2px 16px rgba(56,32,130,.35)}
.hero p{color:rgba(255,255,255,.9)!important}
.hero-leaves{display:none!important}
.hero-quote{color:rgba(255,255,255,.5)!important;font-style:italic}
.hero::after{
  content:'';position:absolute;top:-60%;right:-10%;width:50%;height:220%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,255,255,.28),transparent 70%);
}
.stat-card{position:relative;overflow:hidden;transition:transform .3s var(--lg-ease)}
.stat-card:hover{transform:translateY(-3px)}
.stat-card:nth-child(1){background:linear-gradient(150deg,rgba(150,120,245,.85),rgba(110,110,230,.7))!important}
.stat-card:nth-child(2){background:linear-gradient(150deg,rgba(110,160,245,.8),rgba(100,120,235,.65))!important}
.stat-card:nth-child(3){background:linear-gradient(150deg,rgba(235,140,215,.7),rgba(160,130,240,.6))!important}
.stat-card:nth-child(4){background:linear-gradient(150deg,rgba(150,140,248,.7),rgba(112,122,232,.55))!important}
.stat-icon{background:rgba(255,255,255,.2)!important;border:1px solid rgba(255,255,255,.35)!important;
  border-radius:12px;color:#fff!important}
.class-badge{background:linear-gradient(135deg,var(--lg-b1),var(--lg-b2))!important;color:#fff!important}
.progress-row span{color:var(--lg-ink2)!important}
.todo-icon,.task-icon,.shortcut .shortcut-icon{
  background:linear-gradient(140deg,rgba(109,77,242,.5),rgba(63,143,240,.4))!important;
  border:1px solid rgba(255,255,255,.35)!important;color:#fff!important;
}
.overlay{background:rgba(40,30,90,.55)!important;backdrop-filter:blur(6px)}
.modal,.sheet{background:linear-gradient(150deg,rgba(140,132,240,.94),rgba(105,115,215,.94))!important;
  border:1px solid rgba(255,255,255,.4)!important}
.sheet-head{background:rgba(255,255,255,.1)!important;border-bottom:1px solid rgba(255,255,255,.2)!important}
.sheet-body{color:var(--lg-ink)!important}

/* ============================================================
   Liquid 组件：双环战绩卡 / VS 对撞 / 趋势 / 构成环
   ============================================================ */
.lg-card{
  position:relative;border-radius:26px;padding:20px 18px;overflow:hidden;isolation:isolate;
  background:var(--lg-glass);border:1px solid var(--lg-brd);
  backdrop-filter:blur(26px) saturate(180%);-webkit-backdrop-filter:blur(26px) saturate(180%);
  box-shadow:var(--lg-hi),var(--lg-shadow);color:var(--lg-ink);
}
.lg-card::before{
  content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;z-index:2;
  background:conic-gradient(from var(--lg-ang),rgba(255,255,255,.7),var(--lg-b2) 18%,rgba(255,255,255,.05) 38%,var(--lg-b3) 62%,rgba(255,255,255,.55) 88%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;opacity:.8;
  animation:lgSpinAngle 14s linear infinite;
}
.lg-card::after{
  content:'';position:absolute;top:-55%;left:-25%;width:75%;height:150%;pointer-events:none;z-index:0;
  background:radial-gradient(closest-side,rgba(255,255,255,.2),transparent 72%);transform:rotate(12deg);
}
.lg-card>*{position:relative;z-index:1}
.lg-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.lg-head h3{font-size:14px;margin:0;display:flex;align-items:center;gap:7px}
.lg-head h3::before{content:'';width:3px;height:13px;border-radius:2px;
  background:linear-gradient(var(--lg-b1),var(--lg-b3));box-shadow:0 0 9px var(--lg-b1)}
.lg-head .lg-note{font-size:10px;color:var(--lg-ink2)}

/* 目标卡：单圆盘翻转（总目标冷色 / 本轮暖色） */
.lg-defs{position:absolute;width:0;height:0;overflow:hidden}
.goal-card[data-lg="1"] .ui-edit{display:none!important}
.lg-flip{outline:none;perspective:1200px;cursor:pointer}
.lg-flip:focus-visible .lg-flip-stage{box-shadow:0 0 0 2px rgba(255,255,255,.5);border-radius:20px}
.lg-flip-stage{position:relative;transform-style:preserve-3d;transition:transform .9s var(--lg-ease)}
/* v165 三页循环：0=业绩总目标 1=本轮目标 2=总消耗 */
/* v166.4 修复三页翻转发虚叠印：单旋转轴上三个面无法两两互为背面（第1页时 pg2=0°、第2页时 pg1=0° 均正面朝前），
   改为 0°/180°/360° 同向递进 + 按页显隐非当前面 */
.lg-flip[data-page="1"] .lg-flip-stage{transform:rotateY(180deg)}
.lg-flip[data-page="2"] .lg-flip-stage{transform:rotateY(360deg)}
.lg-face{backface-visibility:hidden;-webkit-backface-visibility:hidden}
.lg-face.lg-back{position:absolute;inset:0;transform:rotateY(180deg)}
.lg-face.lg-third{position:absolute;inset:0;transform:rotateY(360deg)}
.lg-flip[data-page="0"] :is(.lg-face.pg1,.lg-face.pg2),
.lg-flip[data-page="1"] :is(.lg-face.pg0,.lg-face.pg2),
.lg-flip[data-page="2"] :is(.lg-face.pg0,.lg-face.pg1){visibility:hidden}
.lg-flip .lg-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.lg-flip .gtag{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;letter-spacing:.05em;padding:4px 12px;border-radius:999px}
.lg-flip .gtag.total{background:rgba(77,163,255,.2);border:1px solid rgba(140,180,255,.45);color:#dbe9ff}
.lg-flip .gtag.round{background:rgba(255,224,176,.18);border:1px solid rgba(255,224,176,.45);color:var(--lg-gold)}
.lg-flip .gtag.consume{background:rgba(168,236,212,.18);border:1px solid rgba(168,236,212,.45);color:#c9f4e4}
.lg-flip .gtag i{width:7px;height:7px;border-radius:50%}
.lg-flip .gtag.total i{background:linear-gradient(135deg,#4da3ff,#6d4df2);box-shadow:0 0 8px #6d4df2}
.lg-flip .gtag.round i{background:linear-gradient(135deg,#ffe0b0,#f06ec0);box-shadow:0 0 8px #f06ec0}
.lg-flip .gtag.consume i{background:linear-gradient(135deg,#a8ecd4,#5f9df2);box-shadow:0 0 8px #5f9df2}
.lg-cmp{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;
  font-family:var(--lg-num);font-size:14.5px;font-weight:700;line-height:1.1}
.lg-cmp.up{color:var(--lg-gold);text-shadow:0 0 12px rgba(255,224,176,.45)}
.lg-cmp.down{color:#ff9dc8;text-shadow:0 0 12px rgba(240,110,192,.45)}
.lg-cmp small{font-size:9px;color:var(--lg-ink2);font-weight:400;letter-spacing:.06em;margin-top:2px;font-family:inherit}
.lg-dial{position:relative;margin:0 auto}
.lg-dial svg{width:100%;height:100%;transform:rotate(-90deg);overflow:visible}
.lg-dial .trk{fill:none;stroke:rgba(255,255,255,.22);stroke-width:11}
.lg-dial .prg{fill:none;stroke-width:11;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(255,255,255,.35))}
.lg-dial.total .prg{stroke:url(#lgGradTotal)}
.lg-dial.round .prg{stroke:url(#lgGradRound)}
.lg-dial.consume .prg{stroke:url(#lgGradConsume)}
.lg-dial .comet{fill:#fff;filter:drop-shadow(0 0 7px #fff) drop-shadow(0 0 14px var(--lg-b1))}
.lg-dial .orbit{position:absolute;inset:-7px;border-radius:50%;border:1px dashed rgba(255,255,255,.28);animation:lgSpin 46s linear infinite;pointer-events:none}
.lg-dial .orbit::after{content:'';position:absolute;top:-3px;left:50%;width:6px;height:6px;border-radius:50%;background:#fff;box-shadow:0 0 10px #fff}
.lg-mid{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.lg-mid .pct{font-family:var(--lg-num);font-size:44px;font-weight:700;line-height:1;letter-spacing:-.02em;color:#fff;text-shadow:0 3px 16px rgba(56,32,130,.5)}
.lg-mid .pct sup{font-size:19px;font-weight:500;vertical-align:super;margin-left:2px}
.lg-mid .lab{font-size:10px;color:var(--lg-ink2);margin-top:7px;letter-spacing:.1em}
.lg-mid .amt{font-family:var(--lg-num);font-size:13.5px;margin-top:8px;color:#fff}
.lg-mid .amt small{font-size:10px;color:var(--lg-ink2)}
.lg-mid .chip{margin-top:9px;font-size:10px;padding:3px 10px;border-radius:999px;letter-spacing:.05em}
.lg-mid .chip.total{background:rgba(77,163,255,.22);border:1px solid rgba(140,180,255,.5);color:#cfe2ff}
.lg-mid .chip.round{background:rgba(255,224,176,.22);border:1px solid rgba(255,224,176,.5);color:var(--lg-gold)}
.lg-mid .chip.consume{background:rgba(168,236,212,.22);border:1px solid rgba(168,236,212,.5);color:#d8f8ee}
.lg-flip-hint{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;font-size:10.5px;color:var(--lg-ink2);letter-spacing:.08em}
.lg-dots{display:inline-flex;gap:5px}
.lg-dots i{width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.35);transition:.3s}
.lg-dots i.on{background:#fff;box-shadow:0 0 6px #fff}
.lg-swap{display:inline-flex;align-items:center;gap:5px;padding:4px 13px;border-radius:999px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.3);color:#fff;font-size:10.5px}
.lg-flip:hover .lg-swap{background:rgba(255,255,255,.22)}
@media (max-width:360px){.lg-mid .pct{font-size:36px}.lg-mid .amt{font-size:12px}}

/* 双环 */
.lg-ring-wrap{display:flex;align-items:center;justify-content:center;gap:18px;flex-wrap:wrap}
.lg-ring{position:relative;width:212px;height:212px;flex-shrink:0;margin:0 auto}
.lg-ring svg{width:100%;height:100%;transform:rotate(-90deg);overflow:visible}
.lg-ring .trk{fill:none;stroke:rgba(255,255,255,.22);stroke-width:11}
.lg-ring .trk2{fill:none;stroke:rgba(255,255,255,.16);stroke-width:6}
.lg-ring .prg{fill:none;stroke:url(#lgGradOuter);stroke-width:11;stroke-linecap:round;
  filter:drop-shadow(0 0 9px rgba(109,77,242,.8));transition:stroke-dashoffset 1.5s var(--lg-ease)}
.lg-ring .prg2{fill:none;stroke:url(#lgGradInner);stroke-width:6;stroke-linecap:round;
  filter:drop-shadow(0 0 7px rgba(240,110,192,.8));transition:stroke-dashoffset 1.5s var(--lg-ease)}
.lg-ring .thin{fill:none;stroke:rgba(255,255,255,.25);stroke-width:1}
.lg-ring .comet{fill:#fff;filter:drop-shadow(0 0 7px #fff) drop-shadow(0 0 14px var(--lg-b1))}
.lg-ring .orbit{position:absolute;inset:-8px;border-radius:50%;border:1px dashed rgba(255,255,255,.3);
  animation:lgSpin 46s linear infinite}
.lg-ring .orbit::after{content:'';position:absolute;top:-3px;left:50%;width:6px;height:6px;border-radius:50%;
  background:var(--lg-b2);box-shadow:0 0 12px var(--lg-b2)}
.lg-ring-mid{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.lg-ring-mid .pct{font-family:var(--lg-num);font-size:47px;font-weight:700;line-height:1;letter-spacing:-.02em;
  color:#fff;text-shadow:0 2px 18px rgba(56,32,130,.5)}
.lg-ring-mid .pct sup{font-size:21px;font-weight:500;vertical-align:super;margin-left:2px}
.lg-ring-mid .lab{font-size:10px;color:var(--lg-ink2);margin-top:7px;letter-spacing:.08em}
.lg-ring-mid .amt{font-family:var(--lg-num);font-size:14px;margin-top:8px;color:#fff}
.lg-ring-mid .amt small{font-size:10px;color:var(--lg-ink2)}
.lg-ring-mid .round-pct{
  margin-top:9px;font-family:var(--lg-num);font-size:12px;padding:3px 11px;border-radius:999px;
  background:linear-gradient(100deg,rgba(240,110,192,.4),rgba(109,77,242,.35));
  border:1px solid rgba(255,255,255,.35);color:#fff;
}
.lg-legend{display:flex;flex-direction:column;gap:12px;min-width:132px;flex:1}
.lg-legend .li{display:flex;align-items:center;gap:9px;font-size:11px;color:var(--lg-ink2)}
.lg-legend .li i{width:9px;height:9px;border-radius:3px;flex-shrink:0}
.lg-legend .li b{margin-left:auto;font-family:var(--lg-num);color:#fff;font-size:13px}
.lg-legend .li small{color:var(--lg-ink2);font-size:9px}
.lg-legend .hint{font-size:10px;line-height:1.8;color:var(--lg-ink2)}
.lg-foot{display:flex;justify-content:space-between;width:100%;margin-top:16px;padding-top:14px;
  border-top:1px solid rgba(255,255,255,.22);font-size:10px;color:var(--lg-ink2)}
.lg-foot b{display:block;font-family:var(--lg-num);font-size:17px;color:#fff;font-weight:600;margin-bottom:3px}
.lg-foot>div:last-child{text-align:right}
.lg-foot .up{color:var(--lg-gold)}

/* VS 对撞 */
.lg-vs-teams{display:flex;justify-content:space-between;align-items:flex-start;margin:12px 0 14px}
.lg-vs-team{width:38%}.lg-vs-team.right{text-align:right}
.lg-vs-team .tn{font-size:13px;font-weight:700}
.lg-vs-team .ts{font-size:9px;color:var(--lg-ink2);margin-top:4px}
.lg-vs-team .tv{font-family:var(--lg-num);font-size:27px;font-weight:700;line-height:1.15;margin-top:7px;color:#fff}
.lg-vs-team .tv small{font-size:10px;color:var(--lg-ink2);font-weight:400;display:block;margin-top:2px}
.lg-vs-team.left .tv{color:#fff;text-shadow:0 0 20px rgba(109,77,242,.8)}
.lg-vs-team.right .tv{color:#fff;text-shadow:0 0 20px rgba(240,110,192,.8)}
.lg-vs-core{width:50px;height:50px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;margin-top:6px;
  font-family:var(--lg-num);font-style:italic;font-weight:800;font-size:16px;color:#fff;position:relative;
  background:conic-gradient(from 0deg,var(--lg-b1),var(--lg-b2),var(--lg-b3),var(--lg-b1));animation:lgSpin 7s linear infinite}
.lg-vs-core::before{content:'';position:absolute;inset:3px;border-radius:50%;background:#6a63c0}
.lg-vs-core span{position:relative;z-index:2;animation:lgSpin 7s linear infinite reverse}
.lg-vs-core::after{content:'';position:absolute;inset:-8px;border-radius:50%;border:1px solid rgba(255,255,255,.4);animation:lgPing 2.6s infinite}
.lg-vs-beam{display:flex;height:12px;border-radius:12px;gap:4px;margin-top:4px}
.lg-vs-beam .bl,.lg-vs-beam .br{height:100%;position:relative;transition:width 1.3s var(--lg-ease)}
.lg-vs-beam .bl{background:linear-gradient(90deg,rgba(109,77,242,.45),var(--lg-b1));
  border-radius:12px 3px 3px 12px;box-shadow:0 0 18px rgba(109,77,242,.6)}
.lg-vs-beam .br{background:linear-gradient(270deg,rgba(240,110,192,.45),var(--lg-b3));
  border-radius:3px 12px 12px 3px;box-shadow:0 0 18px rgba(240,110,192,.6)}
.lg-vs-beam .bl::after,.lg-vs-beam .br::after{content:'';position:absolute;top:0;bottom:0;width:26px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.85),transparent);animation:lgShine 2.2s infinite}
.lg-vs-beam .bl::after{right:0}.lg-vs-beam .br::after{left:0}
.lg-vs-note{display:flex;justify-content:space-between;font-size:9.5px;color:var(--lg-ink2);margin-top:10px;gap:8px}
.lg-vs-note b{color:var(--lg-gold);font-weight:600}

/* 排行条 */
.lg-rank{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid rgba(255,255,255,.18)}
.lg-rank:last-child{border:0}
.lg-rank .no{font-family:var(--lg-num);font-style:italic;font-size:18px;width:24px;text-align:center;color:var(--lg-ink2);flex-shrink:0}
.lg-rank:nth-child(1) .no{color:var(--lg-gold);text-shadow:0 0 14px rgba(255,224,176,.7)}
.lg-rank .rmain{flex:1;min-width:0}
.lg-rank .rt{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;gap:8px}
.lg-rank h4{font-size:12px;margin:0;font-weight:600}
.lg-rank h4 small{font-size:9px;color:var(--lg-ink2);font-weight:400;margin-left:6px}
.lg-rank .rv{font-family:var(--lg-num);font-size:14px;color:#fff;font-weight:700;white-space:nowrap}
.lg-rank .rv.neg{color:#ffd2e6}
.lg-rank .rbar{height:5px;border-radius:5px;background:rgba(255,255,255,.2);overflow:hidden}
.lg-rank .rbar i{display:block;height:100%;width:0;border-radius:5px;
  background:linear-gradient(90deg,var(--lg-b2),var(--lg-b1));transition:width 1.2s var(--lg-ease)}
.lg-rank .rbar i.neg{background:linear-gradient(90deg,rgba(255,255,255,.35),rgba(240,110,192,.6))}

/* 趋势柱 */
.lg-trend{display:flex;align-items:flex-end;gap:7px;height:132px;margin-top:16px}
.lg-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:7px;height:100%;justify-content:flex-end;position:relative;min-width:0}
.lg-col .cv{font-family:var(--lg-num);font-size:8.5px;color:var(--lg-ink2);position:absolute;top:-3px;white-space:nowrap}
.lg-col .cbar{width:100%;max-width:24px;border-radius:6px 6px 3px 3px;position:relative;height:0;
  background:linear-gradient(180deg,var(--lg-b3),var(--lg-b1));
  box-shadow:0 0 14px -3px rgba(109,77,242,.7);transition:height 1s var(--lg-ease)}
.lg-col .cbar::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:3px;background:#fff;opacity:.85}
.lg-col.cur .cbar{animation:lgPulse 2.4s ease-in-out infinite}
.lg-col.zero .cbar{background:rgba(255,255,255,.2);box-shadow:none}
.lg-col .cl{font-size:8.5px;color:var(--lg-ink2)}
.lg-col.cur .cl{color:#fff;font-weight:700}

/* 构成环 */
.lg-donut-wrap{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:8px}
.lg-donut{position:relative;width:124px;height:124px;flex-shrink:0;margin:0 auto}
.lg-donut svg{width:100%;height:100%;transform:rotate(-90deg)}
.lg-donut circle{fill:none;stroke-width:14;transition:stroke-dasharray 1.1s var(--lg-ease)}
.lg-donut .dc{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.lg-donut .dc b{font-family:var(--lg-num);font-size:19px;color:#fff}
.lg-donut .dc span{font-size:9px;color:var(--lg-ink2);margin-top:3px}

/* 统计三格 */
.lg-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px}
.lg-stat{padding:13px 5px;text-align:center;border-radius:18px;color:#fff;
  border:1px solid rgba(255,255,255,.4);box-shadow:var(--lg-hi);
  backdrop-filter:blur(18px) saturate(180%)}
.lg-stat:nth-child(1){background:linear-gradient(150deg,rgba(150,120,245,.85),rgba(110,110,230,.7))}
.lg-stat:nth-child(2){background:linear-gradient(150deg,rgba(110,160,245,.8),rgba(100,120,235,.65))}
.lg-stat:nth-child(3){background:linear-gradient(150deg,rgba(235,140,215,.7),rgba(160,130,240,.6))}
.lg-stat b{font-family:var(--lg-num);font-size:20px;font-weight:700;display:block;line-height:1.15;
  color:#fff;text-shadow:0 2px 12px rgba(56,32,130,.45);white-space:nowrap}
.lg-stat span{font-size:9px;color:rgba(255,255,255,.92);display:block;margin-top:5px}

/* 特效开关 */
#lg-toggle{
  position:fixed;right:14px;bottom:92px;z-index:70;width:34px;height:34px;border-radius:50%;
  display:grid;place-items:center;font-size:15px;cursor:pointer;
  background:rgba(150,140,248,.6);border:1px solid rgba(255,255,255,.5);color:#fff;
  backdrop-filter:blur(14px);box-shadow:0 8px 20px -8px rgba(70,50,160,.8);
}
body[data-app="admin"] #lg-toggle{bottom:18px}
#lg-toggle:hover{transform:scale(1.08)}
body.lg-nofx *{animation-duration:0s!important;animation-iteration-count:1!important}
body.lg-nofx .bar>i::after,body.lg-nofx .progress span::after{display:none}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}
@media (max-width:360px){
  .lg-ring{width:186px;height:186px}
  .lg-ring-mid .pct{font-size:40px}
  .lg-card{padding:16px 14px}
  .lg-stats{gap:7px}
}

/* ============================================================
   登录 / 注册页 · 液态玻璃（手机端 + 后台共用 .login 容器）
   让页面透出薰衣草流光底与粒子，表单全玻璃化
   ============================================================ */
@keyframes lgOrbFloat{0%,100%{transform:rotate(20deg) translateY(0)}50%{transform:rotate(26deg) translateY(-10px)}}
@keyframes lgBtnShine{0%{left:-70%}60%,100%{left:140%}}
@keyframes lgMarkPulse{0%,100%{box-shadow:0 0 0 1px rgba(255,255,255,.45),0 10px 26px -8px var(--lg-b1),0 0 26px -6px var(--lg-b3)}50%{box-shadow:0 0 0 1px rgba(255,255,255,.6),0 12px 30px -8px var(--lg-b1),0 0 44px -2px var(--lg-b3)}}

/* 容器：半透明玻璃，透出背景光斑与粒子 */
#mobile-app .login,#app .login{
  background:linear-gradient(160deg,rgba(116,94,236,.36),rgba(66,58,178,.24))!important;
  border:1px solid rgba(255,255,255,.32)!important;
  backdrop-filter:blur(26px) saturate(170%)!important;
  -webkit-backdrop-filter:blur(26px) saturate(170%)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.42),0 24px 60px -20px rgba(40,20,120,.55)!important;
  color:#fff!important;position:relative;overflow:hidden;
}
/* 容器内一层柔光 */
#mobile-app .login::before,#app .login::before{
  content:'';position:absolute;inset:-20%;pointer-events:none;z-index:0;
  background:radial-gradient(34% 30% at 84% 4%,rgba(255,224,176,.22),transparent 62%),
             radial-gradient(40% 36% at 6% 46%,rgba(63,143,240,.26),transparent 64%),
             radial-gradient(36% 30% at 90% 90%,rgba(240,110,192,.2),transparent 62%);
  filter:blur(46px);animation:lgDrift 22s ease-in-out infinite alternate;
}
#mobile-app .login>*,#app .login>*{position:relative;z-index:1}

/* 品牌 F 标：渐变 + 呼吸光晕 */
.login .brand-mark{
  background:linear-gradient(135deg,var(--lg-b2),var(--lg-b1) 55%,var(--lg-b3))!important;
  border:1px solid rgba(255,255,255,.5)!important;color:#fff!important;
  animation:lgMarkPulse 3.4s ease-in-out infinite;
}
.login .brand b,.login .brand-name{color:#fff!important}
.login .brand small,.login .brand-sub{color:var(--lg-ink2)!important}

/* 大标题：流光渐变文字 */
.login .login-hero h1,.login h1{
  background:linear-gradient(115deg,#fff 18%,var(--lg-gold) 46%,#ffd9f0 66%,#fff 88%)!important;
  background-size:240% 100%!important;
  -webkit-background-clip:text!important;background-clip:text!important;color:transparent!important;
  animation:lgFlux 8s ease-in-out infinite;
  filter:drop-shadow(0 2px 12px rgba(52,26,150,.4));
}
.login .eyebrow{color:var(--lg-gold)!important;letter-spacing:.16em!important}
.login .login-hero p,.login-hero p{color:var(--lg-ink2)!important}
.login .login-ornament{
  border:1px solid rgba(255,224,176,.5)!important;display:block!important;
  background:radial-gradient(ellipse at 50% 50%,rgba(255,224,176,.28),transparent 70%)!important;
  animation:lgOrbFloat 6s ease-in-out infinite;
}

/* 表单：玻璃输入框 + 聚焦光晕 */
.login .field label{color:var(--lg-ink2)!important}
.login input,.login select,.login textarea{
  background:rgba(255,255,255,.13)!important;border:1px solid rgba(255,255,255,.3)!important;color:#fff!important;
}
.login input:focus,.login select:focus,.login textarea:focus{
  border-color:rgba(255,224,176,.8)!important;
  box-shadow:0 0 0 3px rgba(109,77,242,.35),0 0 26px -6px var(--lg-b1)!important;
}
.login .field small{color:var(--lg-ink3)!important}
.login .checkbox-row{color:var(--lg-ink2)!important}
.login input[type=file]{color:var(--lg-ink2)!important}
.login .error,.login .inline-error{color:#ffc2e6!important}

/* 主按钮：流动渐变 + 光泽扫过（渐变本身来自通用 .btn.primary 规则） */
.login .btn.primary{position:relative;overflow:hidden;padding-top:14px;padding-bottom:14px}
.login .btn.primary::after{
  content:'';position:absolute;top:0;left:-70%;width:44%;height:100%;pointer-events:none;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,.55),transparent);
  transform:skewX(-18deg);animation:lgBtnShine 3.6s ease-in-out infinite;
}

/* 链接 / 说明文字 */
.login .text-link{color:var(--lg-gold)!important}
.login .text-link:hover{color:#fff!important}
.login .login-links small,.login .login-foot{color:var(--lg-ink3)!important}
.login .login-foot{opacity:.85}

/* 体验角色 / 演示账号：玻璃 chip */
.login .demo-roles button,.login .demo-buttons button{
  background:rgba(255,255,255,.14)!important;border:1px solid rgba(255,255,255,.32)!important;
  color:#fff!important;border-radius:999px!important;transition:.22s var(--lg-ease);
}
.login .demo-roles button:hover,.login .demo-buttons button:hover{
  background:rgba(255,255,255,.26)!important;transform:translateY(-1px);
  box-shadow:0 8px 18px -8px var(--lg-b1);
}
.login .notice,.login .demo-logins{
  background:linear-gradient(150deg,rgba(160,152,252,.32),rgba(120,130,236,.2))!important;
  border:1px solid rgba(255,255,255,.28)!important;border-radius:18px!important;
  backdrop-filter:blur(18px) saturate(160%)!important;-webkit-backdrop-filter:blur(18px) saturate(160%)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35)!important;color:#fff!important;
}
.login .notice small,.login .demo-logins p{color:var(--lg-ink3)!important}

/* 界面外观入口：玻璃小按钮 */
.login .appearance-trigger{
  background:rgba(255,255,255,.16)!important;border:1px solid rgba(255,255,255,.34)!important;
  color:#fff!important;border-radius:999px!important;
}

/* ---- 后台登录：居中玻璃大卡（左品牌区 + 右表单区） ---- */
#app .login{max-width:1060px;min-height:min(840px,90vh);margin:5vh auto;border-radius:30px}
#app .login-brand{
  background:linear-gradient(150deg,#392782,#6d4df2 52%,#c04ecf)!important;
  color:#fff!important;
}
#app .login-brand::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(42% 46% at 82% 6%,rgba(255,224,176,.3),transparent 60%),
             radial-gradient(52% 44% at 8% 90%,rgba(63,143,240,.4),transparent 62%);
  filter:blur(34px);animation:lgDrift 18s ease-in-out infinite alternate;
}
#app .login-brand .eyebrow{color:var(--lg-gold)!important}
#app .login-brand footer{color:rgba(255,255,255,.65)!important}
#app .login-form-area{background:transparent!important}
#app .login-form h2{color:#fff!important}
#app .login-form>p{color:var(--lg-ink2)!important}
#app .login-form .subtle{color:var(--lg-ink3)!important}
#app .login-form .subtle a{color:var(--lg-gold)!important}
#app .demo-logins p,#app .login-foot{color:var(--lg-ink3)!important}
@media (max-width:860px){
  #app .login{margin:0;min-height:100dvh;max-width:none;border-radius:0;border:none!important}
}

/* ---- 邀请报名页 · 液态玻璃 ---- */
#app .join-page{background:transparent!important;min-height:100dvh;display:flex;align-items:flex-start;justify-content:center;padding:5vh 20px}
#app .join-wrap{
  width:min(760px,100%);max-width:none;margin:0;
  background:linear-gradient(160deg,rgba(116,94,236,.36),rgba(66,58,178,.24))!important;
  border:1px solid rgba(255,255,255,.32)!important;border-radius:26px;overflow:hidden;position:relative;
  backdrop-filter:blur(26px) saturate(170%)!important;-webkit-backdrop-filter:blur(26px) saturate(170%)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.42),0 24px 60px -20px rgba(40,20,120,.55)!important;
  color:#fff!important;padding:6px 34px 34px;
}
#app .join-wrap::before{content:'';position:absolute;inset:-20%;pointer-events:none;z-index:0;
  background:radial-gradient(34% 28% at 84% 2%,rgba(255,224,176,.22),transparent 62%),radial-gradient(40% 34% at 4% 50%,rgba(63,143,240,.24),transparent 64%);
  filter:blur(46px);animation:lgDrift 22s ease-in-out infinite alternate}
#app .join-wrap>*{position:relative;z-index:1}
#app .join-header .brand-mark{background:linear-gradient(135deg,var(--lg-b2),var(--lg-b1) 55%,var(--lg-b3))!important;border:1px solid rgba(255,255,255,.5)!important;color:#fff!important;animation:lgMarkPulse 3.4s ease-in-out infinite}
#app .join-header .brand-name{color:#fff!important}
#app .join-header .brand-sub{color:var(--lg-ink2)!important}
#app .join-header .eyebrow{color:var(--lg-gold)!important;letter-spacing:.16em}
#app .join-header h1{
  background:linear-gradient(115deg,#fff 18%,var(--lg-gold) 46%,#ffd9f0 66%,#fff 88%)!important;background-size:240% 100%!important;
  -webkit-background-clip:text!important;background-clip:text!important;color:transparent!important;animation:lgFlux 8s ease-in-out infinite;
  filter:drop-shadow(0 2px 12px rgba(52,26,150,.4));
}
#app .join-header p{color:var(--lg-ink2)!important}
#app .join-form{background:rgba(255,255,255,.1)!important;border:1px solid rgba(255,255,255,.26)!important;border-radius:18px!important;backdrop-filter:blur(16px)!important;-webkit-backdrop-filter:blur(16px)!important;color:#fff!important}
#app .join-form .field label{color:var(--lg-ink2)!important}
#app .join-form .notice{background:linear-gradient(150deg,rgba(160,152,252,.32),rgba(120,130,236,.2))!important;border:1px solid rgba(255,255,255,.28)!important;color:#fff!important}
#app .join-form .btn.primary{position:relative;overflow:hidden}
#app .join-form .btn.primary::after{content:'';position:absolute;top:0;left:-70%;width:44%;height:100%;pointer-events:none;background:linear-gradient(105deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-18deg);animation:lgBtnShine 3.6s ease-in-out infinite}

/* ============================================================
   设计稿同步新增组件 · 战队PK对垒 / 荣誉殿堂 / 轮次进度 / 统计格
   ============================================================ */
@keyframes lgSpin{to{transform:rotate(360deg)}}
@keyframes lgPing{to{transform:scale(2.1);opacity:0}}
@keyframes lgBarShine{60%,100%{transform:translateX(100%)}}

/* ---- 战队 PK 对垒卡 ---- */
.lg-card.vs-card{padding:20px 16px 18px;position:relative;overflow:hidden;
  background:radial-gradient(80% 90% at 50% 0%,color-mix(in srgb,var(--lg-b2) 18%,transparent),transparent 70%),var(--lg-glass)}
.vs-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.vs-chips .chip{font-size:10px;padding:5px 11px;border-radius:999px;border:1px solid var(--lg-brd);
  background:rgba(255,255,255,.12);color:var(--lg-ink2);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.vs-chips .chip.gold{border-color:color-mix(in srgb,var(--lg-gold) 45%,transparent);color:var(--lg-gold);
  background:color-mix(in srgb,var(--lg-gold) 14%,transparent)}
.vs-teams{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}
.vs-team{width:38%}
.vs-team .tn{font-size:14px;font-weight:700;color:var(--lg-ink);display:flex;align-items:center;gap:6px}
.vs-team.right{text-align:right}
.vs-team.right .tn{justify-content:flex-end}
.vs-team .ts{font-size:10px;color:var(--lg-ink3);margin-top:4px}
.vs-team .tv{font-family:var(--lg-num);font-size:30px;font-weight:700;line-height:1.1;margin-top:8px}
.vs-team.left .tv{color:var(--lg-b1);text-shadow:0 0 22px color-mix(in srgb,var(--lg-b1) 55%,transparent)}
.vs-team.right .tv{color:var(--lg-b3);text-shadow:0 0 22px color-mix(in srgb,var(--lg-b3) 55%,transparent)}
.vs-team .tv small{font-size:10px;color:var(--lg-ink3);font-weight:400;display:block;letter-spacing:.06em;margin-top:3px;text-shadow:none}
.vs-core{width:52px;height:52px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;margin-top:6px;
  font-family:var(--lg-num);font-style:italic;font-weight:800;font-size:17px;color:#fff;position:relative;
  background:conic-gradient(from 0deg,var(--lg-b1),var(--lg-b2),var(--lg-b3),var(--lg-b1));
  animation:lgSpin 7s linear infinite}
.vs-core::before{content:'';position:absolute;inset:3px;border-radius:50%;background:var(--lg-bg0)}
.vs-core span{position:relative;z-index:2;animation:lgSpin 7s linear infinite reverse}
.vs-core::after{content:'';position:absolute;inset:-9px;border-radius:50%;border:1px solid var(--lg-brd);animation:lgPing 2.6s infinite}
.vs-beam{display:flex;height:12px;border-radius:12px;overflow:hidden;gap:4px;margin-top:4px}
.vs-beam .bl,.vs-beam .br{height:100%;position:relative;transition:width 1.3s var(--lg-ease)}
.vs-beam .bl{background:linear-gradient(90deg,color-mix(in srgb,var(--lg-b1) 45%,transparent),var(--lg-b1));
  border-radius:12px 3px 3px 12px;box-shadow:0 0 18px color-mix(in srgb,var(--lg-b1) 55%,transparent)}
.vs-beam .br{background:linear-gradient(270deg,color-mix(in srgb,var(--lg-b3) 45%,transparent),var(--lg-b3));
  border-radius:3px 12px 12px 3px;box-shadow:0 0 18px color-mix(in srgb,var(--lg-b3) 55%,transparent)}
.vs-beam .bl::after,.vs-beam .br::after{content:'';position:absolute;top:0;bottom:0;width:26px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.85),transparent);animation:lgBarShine 2.2s infinite;transform:translateX(-100%)}
.vs-beam .bl::after{right:0}
.vs-beam .br::after{left:0}
.vs-note{display:flex;justify-content:space-between;font-size:10px;color:var(--lg-ink3);margin-top:12px}
.vs-note b{color:var(--lg-gold);font-weight:600}

/* ---- 荣誉殿堂 ---- */
.honor-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:6px}
.honor-cell{display:flex;flex-direction:column;align-items:center;gap:8px}
.honor-cell .hb{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;position:relative;
  background:linear-gradient(145deg,color-mix(in srgb,var(--lg-gold) 34%,transparent),color-mix(in srgb,var(--lg-b2) 20%,transparent));
  border:1px solid color-mix(in srgb,var(--lg-gold) 45%,transparent);
  box-shadow:0 8px 22px -10px color-mix(in srgb,var(--lg-gold) 40%,transparent)}
.honor-cell .hb .ico{width:30px;height:30px;color:var(--lg-gold)}
.honor-cell span{font-size:10px;color:var(--lg-ink2);text-align:center}
.honor-note{margin-top:14px;font-size:10.5px;color:var(--lg-ink2);line-height:1.6}
.honor-note b{color:var(--lg-gold);font-weight:700}

/* ---- 进度条（本轮/总进度，高条） ---- */
.bar-row{margin-top:14px}
.bar-row:first-of-type{margin-top:4px}
.bar-row .blabel{display:flex;justify-content:space-between;font-size:10.5px;color:var(--lg-ink2);margin-bottom:8px}
.bar-row .blabel b{font-family:var(--lg-num);color:var(--lg-ink);font-size:12px}
.bar.tall{height:12px}

/* ---- 三格统计 ---- */
.stat-trio{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}
.stat-trio .cell{padding:14px 6px;text-align:center;border-radius:16px;
  background:rgba(255,255,255,.1);border:1px solid var(--lg-brd);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.stat-trio .cell b{font-family:var(--lg-num);font-size:22px;font-weight:700;display:block;line-height:1.1;
  background:linear-gradient(120deg,#e6dcff,#ffc9ec);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.stat-trio .cell span{font-size:9px;color:var(--lg-ink2);display:block;margin-top:6px}

/* ---- 工作台：签到打卡卡 / 分类积分 / 成长目标进度 ---- */
.checkin-row{display:flex;align-items:center;gap:14px;margin-top:4px}
.checkin-row .cam{width:52px;height:52px;border-radius:16px;flex-shrink:0;display:grid;place-items:center;font-size:24px;
  background:linear-gradient(140deg,var(--lg-b1),var(--lg-b2));color:#fff;
  box-shadow:0 10px 22px -10px var(--lg-b1),inset 0 1px 0 rgba(255,255,255,.35)}
.checkin-row .ck-main{flex:1;min-width:0}
.checkin-row .ck-main h3{font-size:13.5px;font-weight:600;color:var(--lg-ink)}
.checkin-row .ck-main p{font-size:10.5px;color:var(--lg-ink3);margin-top:3px;line-height:1.5}
.checkin-row .ck-main small{font-size:9.5px;color:var(--lg-gold);display:block;margin-top:4px}
.checkin-row .btn{flex-shrink:0}
.cat-list{display:flex;flex-direction:column;margin-top:4px}
.cat-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid var(--lg-brd)}
.cat-row:last-child{border-bottom:0}
.cat-row span{font-size:11.5px;color:var(--lg-ink2)}
.cat-row b{font-family:var(--lg-num);font-size:16px;font-weight:700;color:var(--lg-ink)}
.cat-row b.neg{color:var(--lg-b3)}
.grow-prog{margin-top:14px;padding-top:4px;border-top:1px dashed var(--lg-brd)}
.stat-trio .cell b.money{font-size:16px;letter-spacing:-.5px;word-break:keep-all}

/* ---------- 页面 Hero（按最终设计稿：英文小标 + 渐变大标题 + 徽章行） ---------- */
.lg-hero{margin:2px 0 18px!important;padding:0!important;background:none!important;border:0!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.lg-hero-eyebrow{font-size:9px;letter-spacing:.24em;text-transform:uppercase;font-weight:600;
  color:#4a2fd0;margin-bottom:7px}
.lg-hero-title{font-size:25px;font-weight:700;line-height:1.3;letter-spacing:.01em;color:#fff!important;
  text-shadow:0 2px 18px rgba(56,32,130,.35)}
.lg-hero-title em{font-style:normal;background:linear-gradient(100deg,#5a2ee0,#2f7fe0,#e051a8,#5a2ee0);
  background-size:280% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
  -webkit-text-fill-color:transparent;animation:lgFlux 9s ease-in-out infinite;text-shadow:none}
.lg-hero-chips{display:flex;gap:6px;margin-top:11px;flex-wrap:wrap}
.lg-hero-chips .chip{font-size:10px;padding:4px 10px;border-radius:20px!important;
  background:rgba(255,255,255,.14)!important;border:1px solid rgba(255,255,255,.3)!important;color:rgba(255,255,255,.95)!important}
.lg-hero-chips .chip.hl{color:#fff!important;background:rgba(109,77,242,.45)!important;border-color:rgba(180,160,255,.45)!important}
.lg-hero-chips .chip.gold{color:#5a3a10!important;background:rgba(255,224,176,.75)!important;border-color:rgba(255,255,255,.5)!important}
.back-line{margin:2px 0 14px}

/* ---------- 结构化经历填写（求职网站式分条目） ---------- */
.hist-editor .hist-rows{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}
.hist-editor .hist-rows:empty{display:none}
.hist-row{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px 36px 12px 12px;
  border-radius:16px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16)}
.hist-row input{min-width:0;width:100%;box-sizing:border-box;font-size:12px;padding:9px 10px;border-radius:10px;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);color:#fff;color-scheme:dark}
.hist-row input::placeholder{color:rgba(255,255,255,.45)}
.hist-row input:focus{outline:none;border-color:rgba(216,204,255,.6)}
.hist-del{position:absolute;top:8px;right:8px;width:22px;height:22px;border-radius:50%;padding:0;
  border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.12);color:#fff;font-size:13px;line-height:1;cursor:pointer}
.hist-del:hover{background:rgba(255,120,140,.3)}
.hist-add{width:100%;font-size:12px;padding:9px 12px;border-radius:12px;margin-bottom:8px;cursor:pointer;
  border:1px dashed rgba(255,255,255,.4);background:rgba(255,255,255,.06);color:#fff}
.hist-add:hover{background:rgba(255,255,255,.12)}
.hist-extra{width:100%;box-sizing:border-box;font-size:12px;padding:9px 10px;border-radius:10px;resize:vertical;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);color:#fff}
.hist-extra::placeholder{color:rgba(255,255,255,.4)}

/* ---------- 外观面板（液态玻璃版：配色主题 + 云雾特效开关） ---------- */
.lg-appearance{background:linear-gradient(160deg,rgba(74,62,146,.88),rgba(46,40,104,.92))!important;
  backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);
  border:1px solid rgba(255,255,255,.28)!important;color:#fff;box-shadow:0 24px 80px rgba(20,10,60,.55)!important}
.lg-appearance h2,.lg-appearance h3{color:#fff!important}
.lg-appearance h3{letter-spacing:.12em}
.lg-appearance p,.lg-appearance small{color:rgba(255,255,255,.66)!important}
.lg-appearance .appearance-close{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.32);color:#fff}
.lg-appearance .lg-palettes button{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);color:#fff}
.lg-appearance .lg-palettes button b{color:#fff}
.lg-appearance .lg-palettes button small{color:rgba(255,255,255,.6)}
.lg-appearance .lg-palettes button[aria-pressed=true]{border-color:#d8ccff;box-shadow:0 0 0 1px #d8ccff,0 8px 24px -10px rgba(140,120,255,.6)}
.lg-appearance .appearance-check{color:var(--lg-gold);font-weight:700}
.lg-swatch{display:block;height:30px;border-radius:10px;margin-bottom:12px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 4px 14px -6px rgba(0,0,0,.4)}
.lg-fx-row{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:14px 16px;border-radius:15px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18)}
.lg-fx-row b{display:block;font-size:13px;color:#fff}
.lg-fx-row small{display:block;font-size:10px;color:rgba(255,255,255,.6);margin-top:3px}
.lg-switch{position:relative;width:48px;height:28px;border-radius:999px;flex-shrink:0;cursor:pointer;
  border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.12);transition:background .25s}
.lg-switch i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;
  background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.35);transition:transform .25s var(--lg-ease)}
.lg-switch[aria-checked=true]{background:linear-gradient(120deg,var(--lg-b1),var(--lg-b2))}
.lg-switch[aria-checked=true] i{transform:translateX(20px)}
.lg-appearance footer{border-top-color:rgba(255,255,255,.18)!important}
.lg-appearance .appearance-reset{color:rgba(255,255,255,.66)}
.lg-appearance .appearance-done{border-radius:12px;color:#fff;
  background:linear-gradient(120deg,var(--lg-b1),var(--lg-b2));border:1px solid rgba(255,255,255,.3)}
.appearance-login .appearance-trigger{background:rgba(255,255,255,.14)!important;border:1px solid rgba(255,255,255,.35)!important;
  color:#fff!important;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.bottom .bottom-side{flex:1;display:flex;align-items:center}
.bottom .bottom-spacer{width:56px;flex-shrink:0}
/* 修复：旧版 bgFlow 动画给 .mobile-shell 加 filter，会把 fixed 的底部导航锚定到页面底部而非视口 */
.mobile-shell{animation:none!important;filter:none!important}

/* ---------- 成长目标四格（按设计稿：大数字在上、标签在下、逐格渐变） ---------- */
.grow-grid .grow-item{padding:14px 6px!important;align-items:center;text-align:center;border-radius:20px!important;
  background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.28)!important}
.grow-grid .grow-item b{font-size:21px;font-weight:700;line-height:1.15;display:block;color:#fff!important;
  text-shadow:0 2px 14px rgba(56,32,130,.45)}
.grow-grid .grow-item b small{font-size:11px;font-weight:500;opacity:.85}
.grow-grid .grow-item b.neg{color:#ffd7e2!important}
.grow-grid .grow-item span{font-size:9px;color:rgba(255,255,255,.92)!important;display:block;margin-top:6px}
.grow-grid .grow-item:nth-child(1){background:linear-gradient(150deg,rgba(150,120,245,.85),rgba(110,110,230,.7))!important}
.grow-grid .grow-item:nth-child(2){background:linear-gradient(150deg,rgba(110,160,245,.8),rgba(100,120,235,.65))!important}
.grow-grid .grow-item:nth-child(3){background:linear-gradient(150deg,rgba(235,140,215,.7),rgba(160,130,240,.6))!important}
.grow-grid .grow-item:nth-child(4){background:linear-gradient(150deg,rgba(120,180,250,.8),rgba(150,130,240,.65))!important}

/* ---------- 首页快捷入口 + 业绩页图形（设计稿新增模块） ---------- */
.shortcuts{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:6px 0 24px}
.sc{display:flex;flex-direction:column;align-items:center;gap:10px;padding:19px 4px 17px;border:0;cursor:pointer;
  border-radius:18px;background:linear-gradient(140deg,rgba(109,77,242,.42),rgba(63,143,240,.32));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 10px 24px -14px rgba(46,30,120,.7)}
.sc i{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.24);border:1px solid rgba(255,255,255,.45);color:#fff}
.sc i svg{width:16px;height:16px}
.sc span{font-size:11px;color:#fff;font-weight:600}
.sc:active{transform:scale(.96)}
.lg-trend-chart{margin-top:10px}
.lg-trend-chart svg{width:100%;height:132px;display:block}
.trend-foot{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.trend-foot span{font-size:9px;padding:3px 7px;border-radius:8px;color:rgba(255,255,255,.8);
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18)}
.trend-foot span.cur{color:#fff;background:rgba(109,77,242,.45);border-color:rgba(180,160,255,.45)}
.perf-chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;margin-bottom:16px}

/* ============================================================
   v33 动效重建：既要「看得见的流动感」，又要「零闪烁」
   ------------------------------------------------------------
   唯一原则：所有持续动画只动 transform / opacity（合成器属性），
   不碰 filter、mix-blend-mode、mask、backdrop-filter、
   box-shadow、left/top、background-position、CSS 自定义属性。
   旧版正是靠这些属性做动画，才会每帧重排/重绘 → 中低端机闪烁。
   本段用视觉等价的合成器写法把动效加回来。
   ============================================================ */
@keyframes lgSweep{0%{transform:translate3d(-70%,0,0);opacity:0}6%{opacity:.6}48%{transform:translate3d(70%,0,0);opacity:.6}60%,100%{transform:translate3d(70%,0,0);opacity:0}}
@keyframes lgAurora{0%{transform:translate3d(-9%,-5%,0) scale(1.08) rotate(-4deg);opacity:.34}50%{transform:translate3d(8%,6%,0) scale(1.3) rotate(5deg);opacity:.62}100%{transform:translate3d(-6%,7%,0) scale(1.12) rotate(-3deg);opacity:.3}}
@keyframes lgAuroraB{0%{transform:translate3d(10%,8%,0) scale(1.24) rotate(6deg);opacity:.3}50%{transform:translate3d(-10%,-7%,0) scale(1.06) rotate(-5deg);opacity:.56}100%{transform:translate3d(6%,-9%,0) scale(1.18) rotate(4deg);opacity:.26}}
@keyframes lgFogDrift{0%{transform:translate3d(-3%,2%,0) scale(1.06)}50%{transform:translate3d(3%,-2%,0) scale(1.16)}100%{transform:translate3d(-3%,2%,0) scale(1.06)}}
@keyframes lgGlowPulse{0%,100%{opacity:.25;transform:scale(.9)}50%{opacity:.72;transform:scale(1.16)}}
@keyframes lgBobSweep{0%{transform:translate3d(-160%,0,0)}55%,100%{transform:translate3d(420%,0,0)}}
@keyframes lgOrbitSlow{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes lgHeroDrift{0%{transform:translate3d(0,0,0) scale(1);opacity:.85}50%{transform:translate3d(-14px,10px,0) scale(1.12);opacity:.5}100%{transform:translate3d(8px,-8px,0) scale(1.02);opacity:.8}}

/* ① 背景极光：两层大面积柔光缓慢交错漂移，取代旧版全屏 hue-rotate 滤镜动画 */
#lg-mist::before,#lg-mist::after{
  content:'';position:absolute;inset:-22%;border-radius:50%;pointer-events:none;
  will-change:transform,opacity;
}
#lg-mist::before{background:radial-gradient(closest-side,var(--lg-b1),var(--lg-b3) 58%,transparent 76%);animation:lgAurora 26s ease-in-out infinite alternate}
#lg-mist::after{background:radial-gradient(closest-side,var(--lg-gold),var(--lg-b2) 55%,transparent 74%);animation:lgAuroraB 34s ease-in-out infinite alternate}
/* ② 环境扫光：一道柔光定期掠过背景（玻璃卡片半透明，能透出流动感） */
#lg-mist .mist-sweep{
  position:absolute;top:-25%;bottom:-25%;left:-45%;width:45%;border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,255,255,.5),rgba(255,255,255,.14) 55%,transparent 72%);
  opacity:0;will-change:transform,opacity;animation:lgSweep 7.5s ease-in-out infinite;
}
/* ③ 主按钮流光：用 transform 位移取代 left（旧版每帧重排） */
.btn.primary::after,.btn-primary::after{
  animation:lgBobSweep 3.8s ease-in-out infinite;
}
body.lg-lite #lg-mist::before,body.lg-lite #lg-mist::after,
body.lg-lite .mist-sweep,body.lg-lite .btn.primary::after,body.lg-lite .btn-primary::after{animation:none!important}

@media (max-width:820px){
  /* 云雾：把"看不到"的慢动作调成肉眼可辨的节奏，并让 noise 层用位移代替 background-position */
  #lg-mist i:nth-child(1){animation-duration:19s}
  #lg-mist i:nth-child(2){animation-duration:25s}
  #lg-mist i:nth-child(3){animation-duration:22s}
  #lg-mist i:nth-child(4){display:block;animation-duration:29s}
  #lg-mist .mist-fog{animation:lgFogDrift 24s ease-in-out infinite!important;opacity:.32}
  /* ④ 玻璃卡高光扫过：每张卡独立延迟错峰，观感连续但不同步 */
  .card,.ui-card,.task-row,.grow-item{position:relative;overflow:hidden}
  .hero::after,.ui-card:nth-child(-n+3)::after,.task-row:nth-child(-n+3)::after,
  .card:nth-child(-n+3)::after,.grow-item:nth-child(-n+4)::after{
    content:'';position:absolute;top:-35%;bottom:-35%;left:-45%;width:45%;border-radius:50%;
    pointer-events:none;z-index:3;opacity:0;
    background:radial-gradient(closest-side,rgba(255,255,255,.42),rgba(255,255,255,.1) 58%,transparent 74%);
    will-change:transform,opacity;animation:lgSweep 6.4s ease-in-out infinite;
  }
  .ui-card:nth-child(2)::after,.task-row:nth-child(2)::after,.card:nth-child(2)::after{animation-delay:1.6s}
  .ui-card:nth-child(3)::after,.task-row:nth-child(3)::after,.card:nth-child(3)::after{animation-delay:3.2s}
  .grow-item:nth-child(2)::after{animation-delay:.9s}
  .grow-item:nth-child(3)::after{animation-delay:2.4s}
  .grow-item:nth-child(4)::after{animation-delay:4.1s}
  /* ⑤ Hero 内部柔光漂移（原有装饰元素改为缓慢游走） */
  .hero::after{animation:lgHeroDrift 12s ease-in-out infinite alternate!important}
  /* ⑥ 翻转卡：静态描边 + 缓慢旋转的柔光巡游（替代原 CSS 变量驱动的圆锥描边，
     后者每帧触发样式重算，是 recalc/s 偏高的主因） */
  .lg-card::before{animation:none;opacity:.75}
  .lg-card::after{animation:lgOrbitSlow 18s linear infinite}
  /* ⑦ 机器人悬浮球：box-shadow 呼吸改为伪元素光晕（纯 opacity/scale） */
  .robot-fab{animation:none!important;position:fixed}
  .robot-fab::after{
    content:'';position:absolute;inset:-14px;border-radius:50%;pointer-events:none;z-index:-1;
    background:radial-gradient(closest-side,rgba(233,79,158,.55),rgba(168,85,247,.28) 60%,transparent 74%);
    will-change:transform,opacity;animation:lgGlowPulse 2.8s ease-in-out infinite;
  }
  .robot-fab .robot-face{animation:robotBounce 2.6s ease-in-out infinite}
  .robot-fab .robot-ring{animation:ringPulse 2.6s ease-out infinite}
  /* ⑧ 标题渐变字流动：仅 hero 一个元素，重绘面积极小 */
  .lg-hero-title em{animation:lgFlux 9s ease-in-out infinite!important}
}
body.lg-lite .hero::after,body.lg-lite .ui-card::after,body.lg-lite .task-row::after,
body.lg-lite .card::after,body.lg-lite .grow-item::after,body.lg-lite .lg-card::after,
body.lg-lite .robot-fab::after,body.lg-lite .robot-fab .robot-face,body.lg-lite .robot-fab .robot-ring{animation:none!important}

/* ---------- v44 底部导航：磨砂胶囊 + 实心高亮块 + 中央机器人跨栏 ---------- */
.bottom{
  left:18px!important;right:18px!important;bottom:18px!important;
  height:66px!important;border-radius:34px!important;padding:0 10px!important;
  background:linear-gradient(150deg,rgba(216,210,248,.5),rgba(186,182,238,.38))!important;
  backdrop-filter:blur(28px) saturate(170%)!important;-webkit-backdrop-filter:blur(28px) saturate(170%)!important;
  border:1px solid rgba(255,255,255,.55)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),inset 0 -1px 0 rgba(120,105,200,.18),0 18px 40px rgba(40,25,100,.42)!important;
}
.bottom .bottom-spacer{width:64px!important}
.bottom button{
  height:50px!important;border-radius:20px!important;margin:0 3px!important;
  color:rgba(255,255,255,.88)!important;
}
.bottom button .ico{width:22px;height:22px;stroke-width:1.7;opacity:.95}
.bottom button span{font-size:10.5px!important;font-weight:500;letter-spacing:.5px}
.bottom button.active{
  background:linear-gradient(165deg,#8a76f5 0%,#6f5de8 52%,#7c5ce8 100%)!important;
  border:1px solid rgba(255,255,255,.32)!important;
  box-shadow:0 10px 22px -8px rgba(95,75,220,.75),inset 0 1px 0 rgba(255,255,255,.42)!important;
  color:#fff!important;animation:none!important;
}
.bottom button.active .ico{opacity:1}
.robot-fab{
  bottom:52px!important;width:62px!important;height:62px!important;
  background:linear-gradient(145deg,#8a76f5 0%,#6f5de8 55%,#8b5cf6 100%)!important;
  border:3px solid rgba(244,242,255,.92)!important;
  box-shadow:0 14px 30px -10px rgba(95,75,220,.85),inset 0 1px 0 rgba(255,255,255,.5)!important;
}
.robot-fab .robot-face{font-size:28px!important}
@media(min-width:700px){.robot-fab{bottom:61px!important}}

/* ============================================================
   v46 两端根治闪烁（前台 + 后台统一）
   原则：只保留 transform/opacity 合成器动画；
        所有"每帧重绘/重排"源（filter / background-position /
        box-shadow / mix-blend / mask / 自定义属性 / left）一律停用。
   ============================================================ */

/* ① 全屏雾层：blur(74px) 滤镜 + mask + mix-blend 会让整个云雾层每帧
      重新栅格化/重新合成，是两端闪烁与黑闪的第一来源；雾斑本就是径向
      渐变软光，去掉后观感几乎不变、开销归零。 */
#lg-mist{filter:none!important;-webkit-mask-image:none!important;mask-image:none!important}
#lg-mist i,#lg-mist .mist-fog{mix-blend-mode:normal!important}

/* ② 噪声水汽层的 background-position 动画（每帧重采样整张位图）→ 停用，保留静态雾感 */
#lg-mist .mist-fog{animation:none!important}

/* ③ background-position 流光渐变：主按钮 / 侧边导航 / 渐变文字全部静态化，
      渐变色保留，只去掉每帧重绘的位移（按钮与文字仍由 ::after transform 扫光提供动效） */
.btn.primary,.btn-primary,.quick-actions .btn:first-child,
.nav-item.active,
.login .login-hero h1,.login h1,
#app .join-header h1,
.lg-hero-title em{
  animation:none!important;
}
/* 渐变文字停用位移后固定在较鲜艳的偏移位，保证颜色饱和可见 */
.lg-hero-title em{background-position:45% 50%!important}
.login .login-hero h1,.login h1,#app .join-header h1{background-position:32% 50%!important}

/* ④ 翻转卡圆锥描边由自定义属性驱动（每帧整卡重算）→ 停用；改用 ::after transform 巡游 */
.lg-card::before{animation:none!important;opacity:.7}
.lg-card::after{will-change:transform;animation:lgOrbitSlow 18s linear infinite}

/* ⑤ 登录按钮光泽用 left 位移（每帧触发全局布局）→ 停用 */
.login .btn.primary::after{animation:none!important}

/* ⑥ box-shadow 呼吸（当前列指示条）→ 停用，保留静态高亮 */
.lg-col.cur .cbar{animation:none!important}
/* 品牌 F 标呼吸光晕（box-shadow）→ 停用，保留静态渐变 */
.login .brand-mark{animation:none!important}

/* ⑦ 数字 filter:brightness 呼吸（.stats strong）→ 停用，避免数字闪烁 */
.stats strong{animation:none!important}

/* ⑧ 移动端"战队对撞"渐变文字 background-position 位移 → 停用，保留静态渐变 */
.fight-text{animation:none!important;background-size:100% auto!important}

/* ⑨ 移动端整屏 hue-rotate（.mobile-shell bgFlow）→ 停用，背景保留静态 */
.mobile-shell{animation:none!important}

/* ============================================================
   v47 底部导航参考稿风格 + 动效全开（不考虑省电）
   ============================================================ */
.bottom{overflow:hidden}
/* ① 整条导航的柔光扫过（transform 合成动画，酷炫不闪） */
.bottom::after{
  content:'';position:absolute;top:-40%;bottom:-40%;left:-45%;width:40%;border-radius:50%;
  background:radial-gradient(closest-side,rgba(255,255,255,.42),rgba(255,255,255,.12) 55%,transparent 72%);
  pointer-events:none;opacity:0;will-change:transform,opacity;animation:lgSweep 6s ease-in-out infinite;
}
/* ② 图标纯线性白描边（去掉旧的白底块） */
.bottom button{color:rgba(255,255,255,.95)!important}
.bottom button .ico,.bottom button.active .ico{background:none!important}
.bottom button.active .ico{color:#fff!important}
/* ③ 选中块：饱和渐变 + 弹性入场动画（切页时 pop 一下） */
.bottom button.active{
  background:linear-gradient(160deg,#9d87f8 0%,#7161ea 52%,#8b5cf6 100%)!important;
  border:1px solid rgba(255,255,255,.35)!important;
  box-shadow:0 10px 24px -8px rgba(96,76,225,.9),inset 0 1px 0 rgba(255,255,255,.45)!important;
  animation:navPop .5s cubic-bezier(.34,1.56,.64,1)!important;
}
/* ④ 选中块上的流光扫过 */
.bottom button.active::after{
  content:'';display:block!important;position:absolute;top:0;bottom:0;left:-60%;width:45%;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,.55),transparent);
  transform:skewX(-16deg);pointer-events:none;
  animation:lgBobSweep 3.2s ease-in-out infinite;
}
@keyframes navPop{0%{transform:scale(.84)}60%{transform:scale(1.07)}100%{transform:scale(1)}}
/* ⑤ 机器人：恢复弹跳 + 光环脉冲 + 呼吸光晕，尺寸加大 */
.robot-fab{width:64px!important;height:64px!important}
.robot-fab .robot-face{animation:robotBounce 2.4s ease-in-out infinite!important}
.robot-fab .robot-ring{animation:ringPulse 2.4s ease-out infinite!important}

/* ---------- v48 快捷卡图标：圆形磨砂 + 白描边（参考稿风格） ---------- */
.shortcut .shortcut-icon{
  width:54px!important;height:54px!important;border-radius:50%!important;
  background:radial-gradient(120% 120% at 30% 18%,rgba(255,255,255,.3),rgba(255,255,255,.12))!important;
  border:1.5px solid rgba(255,255,255,.55)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 10px 20px -10px rgba(50,35,140,.6)!important;
  color:#fff!important;
}
.shortcut .shortcut-icon .ico{stroke-width:1.7}
.shortcut{font-size:11.5px!important;font-weight:600;color:rgba(255,255,255,.95)!important}

/* ---------- v49 信息行文案内移：detail-row 横向留白（小组管理/战队管理等） ---------- */
.detail-row{padding:12px 14px!important;border-radius:12px!important}
.detail-row:last-child{border-bottom:none!important}

/* ---------- v50 荣誉图标透明化：小徽标底色去除，矢量图标直接透底 ---------- */
.honor-ico{background:transparent!important;border:0!important;box-shadow:none!important;color:inherit!important;border-radius:0!important}

/* ---------- v52 业绩构成环形图：参考稿风格 + 动效（描画入场 + 整环慢旋） ---------- */
.lg-donut{width:138px!important;height:138px!important}
.lg-donut circle{stroke-width:15!important}
.lg-donut circle.seg{animation:lgDonutIn 1s var(--lg-ease) backwards}
.lg-donut svg{animation:lgDonutSpin 30s linear infinite}
@keyframes lgDonutIn{from{stroke-dasharray:0 999}}
@keyframes lgDonutSpin{from{transform:rotate(-90deg)}to{transform:rotate(270deg)}}
.lg-legend .li i{border-radius:50%!important;width:10px!important;height:10px!important}
.lg-legend .li{font-size:12px!important}
.lg-legend .li b{font-size:14px!important}
.lg-donut .dc b{font-size:21px!important}

/* ---------- v64 图标/文字对比度增强：暗紫图标在暗色玻璃上过暗，统一提亮 ---------- */
.mobile-shell .work-card .ico,
.mobile-shell .menu-row .ico,
.mobile-shell .menu-row > .ico,
.mobile-shell .id-row .ico,
.mobile-shell .empty .ico{color:#e9d5ff!important}
.mobile-shell .ico{stroke-width:1.8}

/* ---------- v72 底部导航按参考稿微调：更大的 squircle 选中块 + 更大图标 ---------- */
.bottom{height:70px!important;border-radius:38px!important;bottom:16px!important;padding:0 12px!important}
.bottom button{height:56px!important;border-radius:26px!important;margin:0 4px!important}
.bottom button .ico{width:24px!important;height:24px!important;stroke-width:1.9!important}
.bottom button span{font-size:11.5px!important;font-weight:600!important}
.bottom button.active{
  background:linear-gradient(160deg,#9b85f8 0%,#6d5cea 50%,#8b5cf6 100%)!important;
  border:1px solid rgba(255,255,255,.4)!important;
  box-shadow:0 14px 28px -8px rgba(96,76,225,.95),inset 0 1px 0 rgba(255,255,255,.5)!important;
}
.robot-fab{width:66px!important;height:66px!important;bottom:56px!important}
.robot-fab .robot-face{font-size:30px!important}
@media(min-width:700px){.robot-fab{bottom:65px!important}}

/* ---------- v73 底部导航光效修正：流光限制在选中块内；清除图标残留白环 ---------- */
.bottom button{overflow:hidden}
.bottom button .ico,.bottom button.active .ico{background:none!important;box-shadow:none!important;border-radius:0!important}
.bottom::after{background:radial-gradient(closest-side,rgba(255,255,255,.22),rgba(255,255,255,.07) 55%,transparent 72%)!important}

/* ---------- v74 底部导航：去掉扫光/流光，干净清爽（对齐参考稿） ---------- */
.bottom::after{display:none!important}
.bottom button.active::after{display:none!important}
.bottom{background:linear-gradient(150deg,rgba(228,224,252,.55),rgba(198,194,244,.42))!important}
.bottom button.active{animation:none!important}

/* ---------- v75 动态背景光效：水雾/极光层提到 body 之上、内容之下；容器半透明透出水雾 ---------- */
body::after{z-index:0!important}
#lg-mist{z-index:0!important}
.mobile-shell{background:
  radial-gradient(circle at 15% 8%,rgba(236,72,153,.20),transparent 42%),
  radial-gradient(circle at 85% 25%,rgba(168,85,247,.18),transparent 45%),
  radial-gradient(circle at 50% 95%,rgba(124,58,237,.22),transparent 55%),
  rgba(15,5,32,.62)!important}
/* 胜负战队突出 */
.vs-team.win .tn{font-size:22px!important;color:#ffe0b0!important}
.vs-team.win .tv.num{color:#fff!important}

/* ---------- v87 PC 后台组织架构：暗色玻璃适配（与移动端 v42 同款，消除白底浅字） ---------- */
.shell .org-board{color:var(--lg-ink,#f3ecff)}
.shell .org-class,.shell .org-team,.shell .org-group{background:rgba(255,255,255,.06)!important;border:1px solid rgba(255,255,255,.16)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.14)}
.shell .org-class{background:linear-gradient(150deg,rgba(236,72,153,.22),rgba(124,58,237,.14) 55%,rgba(255,255,255,.05))!important}
.shell .org-kicker{color:#f9a8d4!important}
.shell .org-class h2,.shell .org-team>summary strong,.shell .org-group>summary strong,.shell .org-duties strong,.shell .org-person strong{color:#fff!important}
.shell .org-team>summary small,.shell .org-fold-mark,.shell .org-person small,.shell .org-officer-label,.shell .org-officer-names small,.shell .org-vacancy,.shell .org-footnote,.shell .org-duties p>span,.shell .org-toolbar label{color:#c4b5fd!important}
.shell .org-person-icon{background:rgba(236,72,153,.18)!important;color:#f9a8d4!important}
.shell .org-officers,.shell .org-duties{border-top-color:rgba(255,255,255,.14)!important}
.shell .org-officer-names{color:#ffd7ea!important}
.shell .org-add,.shell .org-edit,.shell .org-test,.shell .org-group>summary small,.shell .org-duties svg{color:#f9a8d4!important}
.shell .org-mine{border-color:rgba(236,72,153,.55)!important}
.shell .org-member{background:rgba(255,255,255,.09)!important;color:#f3ecff!important}
.shell .org-member small{color:#d8ccf5!important}
.shell .org-toolbar select,.shell .org-nav-history{background:rgba(255,255,255,.08)!important;border:1px solid rgba(255,255,255,.18)!important;color:#f3ecff!important;border-radius:10px}
.shell .org-group-members{border-top-color:rgba(255,255,255,.14)!important}
.shell .org-group-members h4{color:#fff!important}
.shell .org-group-members h4 small{color:#c4b5fd!important}

/* ---------- v87 后台文字对比度收尾：眉题/激活页签/绿色小按钮 ---------- */
.eyebrow{color:#d8b4fe!important}
.tab.active{color:#fff!important;background:linear-gradient(135deg,rgba(101,163,13,.6),rgba(63,98,18,.6))!important;border-color:rgba(163,230,53,.45)!important}
.row-actions button{color:#c9e8b4!important}
#page-content button.active{color:#eef9e6!important;border-color:rgba(163,230,53,.5)!important}

/* v142 后台审核中心 tabs 对比度修复 */
#app .tabs .tab{color:rgba(255,255,255,.9)!important;border-bottom-color:rgba(255,255,255,.3)!important}
#app .tabs .tab small{color:#fff!important;background:rgba(255,255,255,.25)!important}
#app .tabs .tab.active{color:#fff!important;text-shadow:0 1px 6px rgba(0,0,0,.35);border-bottom-color:#fff!important}

/* v143 班级卡头部/资讯封面：暗色下浅色底导致白字不可见，改玻璃底 */
#app .class-card-head{background:rgba(255,255,255,.1)!important;border-bottom:1px solid rgba(255,255,255,.16)}
#app .class-card-head h2{color:#fff!important}
#app .class-card-head p{color:rgba(255,255,255,.78)!important}
#app .class-card-head .status{color:#fff!important;background:rgba(255,255,255,.18)!important;border-color:rgba(255,255,255,.3)!important}
#app .class-card-head .class-badge{color:#fff!important}
#app .article-cover{background:linear-gradient(135deg,rgba(255,255,255,.14),rgba(255,255,255,.05))!important;border-bottom:1px solid rgba(255,255,255,.16)}
#app .article-cover span{color:rgba(255,255,255,.85)!important}
#app .article-body h3{color:#fff!important}
#app .article-body p{color:rgba(255,255,255,.82)!important}
#app .article-body footer span{color:rgba(255,255,255,.7)!important}

/* ===== 移动端性能降级 =====
   v152：大半径 blur 是触屏滚动卡顿主因，触屏设备降为轻量模糊、动画减速、fixed 层去毛玻璃。
   v163（2026-11-01）：华为/中端安卓真机出现「卡慢 + 花屏（教练 orb 残影盖在目标卡上、下半屏空白）」，
   根因是 GPU 合成层超载：每张卡 backdrop-filter blur(26px) + 两层全屏 blur 雾 + 无限动画 +
   3D 翻转 preserve-3d 叠加，中端安卓 GPU 直接合成层耗尽/损坏。触屏端进一步强制降级：
   ① 卡片毛玻璃改实色玻璃底（视觉相近，GPU 大减负）
   ② 雾层静态化（保留色彩构图，去掉持续重绘）+ 去混色混合
   ③ 目标卡 3D 翻转改 2D 淡切（preserve-3d+blur 是安卓花屏的经典组合）
   ④ 描边光环/轨道圆等无限动画全部停止。PC（hover 设备）保持全特效。 */
@media (hover:none) and (pointer:coarse){
  body::after{filter:blur(20px) saturate(150%)!important}
  #lg-mist{filter:blur(18px) saturate(150%)!important}
  #lg-mist i,#lg-mist .mist-fog,#lg-mist .mist-fog.f2,#lg-mist .mist-sweep{animation:none!important}
  #lg-mist i{mix-blend-mode:normal!important;will-change:auto!important}
  .bottom,.sheet,.overlay{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  /* 兜底：手机端所有卡片/贴片的 backdrop-filter 一并关闭（都有半透明底色，去模糊不影响可读） */
  #mobile-app *{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  .lg-card{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
    background:linear-gradient(150deg,rgba(146,136,246,.88),rgba(108,118,230,.7))!important}
  .lg-card::before{animation:none!important;opacity:.5!important}
  .lg-card::after{display:none!important}
  .lg-dial .orbit,.lg-ring .orbit{animation:none!important}
  .lg-dial .orbit::after,.lg-ring .orbit::after{display:none!important}
  .lg-flip-stage{transform-style:flat!important;transform:none!important;transition:opacity .26s ease!important}
  .lg-flip .lg-face{backface-visibility:visible!important;-webkit-backface-visibility:visible!important;transform:none!important;
    position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .26s ease,visibility .26s!important;border-radius:20px;
    background:linear-gradient(150deg,rgba(146,136,246,.88),rgba(108,118,230,.7))}
  .lg-flip[data-page="0"] .lg-face.pg0{position:relative;opacity:1;visibility:visible}
  .lg-flip[data-page="1"] .lg-face.pg1{opacity:1;visibility:visible}
  .lg-flip[data-page="2"] .lg-face.pg2{opacity:1;visibility:visible}
}

/* v160 新版公司 Logo */
.brand-mark img{width:100%;height:100%;object-fit:contain;display:block;border-radius:inherit}
.splash img{width:64px;height:64px;object-fit:contain;display:block;margin:0 auto 10px}
