/* ============================================================
   设计体系：蓝色科技（参考图）+ 红金“正能量”强调 + 星河紫
   主题：燕赵职工 · 工惠在您身边 · 网络正能量
   ============================================================ */
:root{
  --navy-950:#04091C;
  --navy-900:#07112B;
  --navy-800:#0B1B3D;
  --blue-600:#1B5BFF;
  --blue-500:#2E7CFF;
  --blue-400:#4D9BFF;
  --cyan-300:#6EE7FF;
  --red-500:#FF4D3D;
  --gold-500:#FFB020;
  --gold-400:#FFC53D;
  --gold-300:#FFD97A;
  --violet-400:#A78BFF;
  --white:#FFFFFF;
  --text-dim:rgba(255,255,255,.72);
  --text-faint:rgba(255,255,255,.5);
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --font:'Noto Sans SC','PingFang SC','Microsoft YaHei',system-ui,-apple-system,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{height:100%;width:100%;overflow:hidden;}
body{
  font-family:var(--font);
  background:var(--navy-950);
  color:var(--white);
  overscroll-behavior:none;
  touch-action:manipulation;
  -webkit-font-smoothing:antialiased;
  -webkit-user-select:none;
  user-select:none;
}
button{font-family:inherit;border:none;background:none;color:inherit;cursor:pointer;}
img{display:block;}

/* ============ 页面容器 / 路由 ============ */
.page{
  position:fixed;inset:0;
  top:0;right:0;bottom:0;left:0;
  height:100vh;height:100dvh;min-height:100vh;
  display:none;
  flex-direction:column;
  overflow:hidden;
  background:var(--navy-950);
}
.page.is-active{display:flex;animation:pageIn .5s cubic-bezier(.22,.9,.3,1) both;}
@keyframes pageIn{from{opacity:0;transform:scale(.985);}to{opacity:1;transform:none;}}

/* 通用返回头 */
.page-head{
  position:absolute;top:0;left:0;right:0;z-index:20;
  display:flex;align-items:center;justify-content:space-between;
  padding:calc(var(--safe-top) + 10px) 14px 10px;
}
.head-title{font-size:16px;font-weight:700;letter-spacing:.5px;}
.head-spacer{width:38px;}
.icon-btn{
  width:38px;height:38px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  color:var(--white);transition:transform .15s;
}
.icon-btn:active{transform:scale(.9);}

/* ============ 首页 ============ */
.home-video{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;z-index:0;
  filter:saturate(1.05);
  will-change:transform;
  animation:homeKenBurns 16s ease-in-out infinite;
}
@keyframes homeKenBurns{
  0%,100%{transform:scale(1) translateY(0);}
  50%{transform:scale(1.13) translateY(-1.4%);}
}
.home-veil{
  position:absolute;inset:0;z-index:1;
  background:
    linear-gradient(180deg, rgba(4,9,28,.62) 0%, rgba(4,9,28,.28) 34%, rgba(4,9,28,.15) 55%, rgba(4,9,28,.5) 78%, rgba(4,9,28,.88) 100%);
}
.home-content{
  position:relative;z-index:3;
  flex:1;display:flex;flex-direction:column;
  align-items:center;text-align:center;
  padding:calc(var(--safe-top) + 88px) 26px 0;
}
.home-tag{
  font-size:12.5px;font-weight:500;letter-spacing:2.5px;
  color:var(--gold-300);
  padding:6px 16px;border-radius:999px;
  border:1px solid rgba(255,197,61,.5);
  background:rgba(4,9,28,.4);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  opacity:0;animation:riseIn .8s .15s cubic-bezier(.22,.9,.3,1) forwards;
}

.home-title{
  position:relative;margin-top:22px;font-weight:900;letter-spacing:2px;
  font-size:clamp(34px,12.8vw,46px);
  line-height:1.3;text-shadow:0 4px 18px rgba(0,0,0,.5);
  -webkit-text-stroke:.8px rgba(255,255,255,.16);
}
.home-title .line{display:block;opacity:0;animation:titleRise .9s cubic-bezier(.22,.9,.3,1) forwards;}
.home-title .line-1{
  background:linear-gradient(180deg,#FFFFFF 30%,#EAF2FF 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  -webkit-text-stroke:1.2px rgba(255,255,255,.3);
  text-shadow:0 2px 22px rgba(80,140,255,.5),0 0 44px rgba(120,170,255,.35);
  animation:titleRise .9s .32s cubic-bezier(.22,.9,.3,1) forwards;
}
.home-title .line-2{
  background:linear-gradient(180deg,#FFFFFF 30%,#FFF6E0 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  -webkit-text-stroke:1.2px rgba(255,255,255,.3);
  text-shadow:0 2px 22px rgba(80,140,255,.45),0 0 44px rgba(255,210,140,.3);
  animation:titleRise .9s .5s cubic-bezier(.22,.9,.3,1) forwards;
}
@keyframes riseIn{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}
@keyframes titleRise{from{opacity:0;transform:translateY(26px);filter:blur(6px);}to{opacity:1;transform:none;filter:blur(0);}}
@keyframes goldFlow{0%,100%{background-position:0% 50%;}50%{background-position:100% 50%;}}
@keyframes shineSweep{
  0%,60%{background-position:0 0,125% 0;}
  92%,100%{background-position:0 0,-130% 0;}
}
.home-sub{
  margin-top:14px;font-size:14px;font-weight:600;letter-spacing:.5px;
  color:rgba(255,255,255,.85);text-shadow:0 1px 8px rgba(0,0,0,.6);
  opacity:0;animation:riseIn .8s .68s forwards;
}
/* 启动块 */
.home-launch{
  margin-top:34px;display:flex;flex-direction:column;align-items:center;gap:8px;
  opacity:0;animation:riseIn .9s .82s forwards;
}
.launch-badge{
  font-size:11.5px;font-weight:700;letter-spacing:3px;color:#fff;
  padding:5px 14px;border-radius:6px;
  background:linear-gradient(90deg,var(--blue-600),var(--blue-400));
  box-shadow:0 4px 18px rgba(46,124,255,.45);
}
.launch-date{
  font-size:24px;font-weight:900;letter-spacing:2px;
  font-variant-numeric:tabular-nums;
  text-shadow:0 2px 18px rgba(0,0,0,.5);
}
.launch-slogan{
  font-size:13px;font-weight:500;color:var(--gold-300);letter-spacing:2px;
  animation:pulseSoft 2.4s ease-in-out infinite;
}
@keyframes pulseSoft{0%,100%{opacity:.85;transform:scale(1);}50%{opacity:1;transform:scale(1.04);}}
/* 首页底部主办单位 */
.home-org{
  position:relative;z-index:3;
  text-align:center;font-size:12px;font-weight:500;
  letter-spacing:.5px;color:rgba(255,255,255,.62);
  padding:0 22px 12px;text-shadow:0 1px 6px rgba(0,0,0,.6);
}
/* 首页底部按钮 */
.home-actions{
  position:relative;z-index:3;
  padding:0 22px calc(var(--safe-bottom) + 82px);
  display:flex;flex-direction:column;gap:13px;
}
.btn{
  display:flex;align-items:center;justify-content:center;gap:9px;
  height:52px;border-radius:16px;
  font-size:16.5px;font-weight:700;letter-spacing:1px;
  transition:transform .15s, box-shadow .2s, opacity .2s;
  opacity:0;animation:riseIn .7s cubic-bezier(.22,.9,.3,1) forwards;
}
.btn:active{transform:scale(.965);}
.btn-primary{
  background:linear-gradient(135deg,var(--blue-500),var(--blue-400));
  color:#fff;box-shadow:0 10px 30px rgba(46,124,255,.5), inset 0 1px 0 rgba(255,255,255,.35);
  animation-delay:.95s;
}
.btn-primary::after{
  content:"";position:absolute;inset:0;border-radius:16px;
  background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.32) 50%,transparent 70%);
  background-size:250% 100%;background-position:120% 0;
  animation:sheen 3.2s 1.6s ease-in-out infinite;pointer-events:none;
}
.btn{position:relative;overflow:hidden;}
@keyframes sheen{0%{background-position:120% 0;}55%,100%{background-position:-60% 0;}}
.btn-ghost{
  background:rgba(255,255,255,.07);
  border:1px solid rgba(255,255,255,.28);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  color:var(--white);
  animation-delay:1.08s;
}
.btn-ghost:active{background:rgba(255,255,255,.14);}
/* 首页漂浮光尘（纯CSS） */
.home-dust{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden;}
.dust-dot{
  position:absolute;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.9),rgba(110,231,255,.25) 55%,transparent 70%);
  animation:floatUp linear infinite;
}
@keyframes floatUp{
  0%{transform:translateY(0) translateX(0);opacity:0;}
  12%{opacity:.8;}
  88%{opacity:.6;}
  100%{transform:translateY(-108vh) translateX(var(--drift,20px));opacity:0;}
}
.home-glow{
  position:absolute;border-radius:50%;filter:blur(60px);opacity:.5;z-index:2;pointer-events:none;
  animation:glowBreath 6.5s ease-in-out infinite;
}
.home-glow.g1{width:300px;height:300px;left:-90px;top:22%;background:radial-gradient(circle,var(--blue-400),transparent 70%);}
.home-glow.g2{width:260px;height:260px;right:-70px;top:52%;background:radial-gradient(circle,rgba(255,77,61,.5),transparent 70%);animation-delay:1.8s;}
@keyframes glowBreath{
  0%,100%{transform:scale(1);opacity:.34;}
  50%{transform:scale(1.32);opacity:.72;}
}
/* 首页动效增强：星点闪烁 */
.home-sparkles{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden;}
.sparkle{
  position:absolute;border-radius:50%;
  background:#fff;
  box-shadow:0 0 6px 1px rgba(180,230,255,.85);
  animation:twinkle ease-in-out infinite;
}
.sparkle.gold{background:#FFE1A0;box-shadow:0 0 6px 1px rgba(255,214,140,.85);}
@keyframes twinkle{
  0%,100%{opacity:0;transform:scale(.3);}
  45%{opacity:.95;}
  60%{opacity:.55;transform:scale(1);}
}
/* 首页动效增强：柔光扫过 */
.home-scan{
  position:absolute;left:-10%;right:-10%;height:36%;top:-42%;z-index:2;
  pointer-events:none;
  background:linear-gradient(180deg,transparent 0%,rgba(120,195,255,.05) 42%,rgba(150,220,255,.16) 50%,rgba(120,195,255,.05) 58%,transparent 100%);
  transform:rotate(5deg);
  animation:scanMove 9.5s linear infinite;
}
@keyframes scanMove{
  0%{top:-42%;opacity:0;}
  8%{opacity:1;}
  92%{opacity:1;}
  100%{top:128%;opacity:0;}
}

/* ============ 海报页 ============ */
.page-poster{background:linear-gradient(180deg,#0A1B3D 0%,#050D24 46%,#0A1230 100%);position:relative;isolation:isolate;}
.poster-bg-layer{
  position:absolute;left:0;top:0;width:100%;height:100%;z-index:-1;
  pointer-events:none;transition:opacity .55s ease;
  background-size:cover;background-position:center;
}
.poster-stage{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:calc(var(--safe-top) + 56px) 18px 10px;gap:12px;
  min-height:0;overflow-y:auto;overscroll-behavior:contain;
}
.poster-frame{
  position:relative;width:min(72vw,310px,36vh);flex:none;
  border-radius:20px;overflow:hidden;
  box-shadow:0 22px 60px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.12);
  background:#0A1230;
}
.poster-frame::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 0 46px rgba(0,0,0,.28);border-radius:20px;
}
.poster-frame.flip .poster-img{animation:flipPop .45s cubic-bezier(.3,.9,.3,1.2);}
@keyframes flipPop{0%{transform:scale(1);}40%{transform:scale(.94) rotate(-1deg);opacity:.6;}100%{transform:scale(1);opacity:1;}}
.poster-img{width:100%;height:auto;}
.poster-hint{
  font-size:12.5px;color:var(--text-dim);letter-spacing:.5px;
  display:flex;align-items:center;gap:6px;justify-content:center;
}
.poster-hint svg{flex:none;}
.poster-controls{
  flex:none;
  padding:12px 18px calc(var(--safe-bottom) + 18px);
  display:flex;flex-direction:column;gap:12px;
  background:linear-gradient(180deg, rgba(8,16,38,.4) 0%, rgba(5,9,24,.94) 42%);
  border-top:1px solid rgba(255,255,255,.09);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.theme-row{display:flex;align-items:center;gap:10px;}
.ctrl-label{font-size:13px;color:var(--text-dim);flex:none;letter-spacing:1px;}
.theme-chips{
  flex:1;display:flex;gap:9px;overflow-x:auto;
  scrollbar-width:none;-ms-overflow-style:none;
  padding:2px;
}
.theme-chips::-webkit-scrollbar{display:none;}
.theme-chip{
  flex:none;display:flex;align-items:center;gap:6px;
  height:34px;padding:0 13px;border-radius:999px;
  font-size:12.5px;font-weight:500;color:var(--text-dim);
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);
  transition:all .2s;
}
.theme-chip .swatch{width:12px;height:12px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.25);}
.theme-chip.on{
  color:#fff;background:rgba(46,124,255,.2);
  border-color:var(--blue-400);box-shadow:0 0 14px rgba(46,124,255,.35);
}
.btn-row{display:flex;gap:12px;}
.btn-row .btn{flex:1;height:48px;font-size:15px;opacity:1;animation:none;}
.btn-row .btn:active{transform:scale(.965);}

/* ============ 云图景页 ============ */
.page-galaxy{background:radial-gradient(120% 90% at 50% 0%,#0E2050 0%,#070E2A 46%,#040819 100%);}
.galaxy-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;touch-action:none;}
.galaxy-vignette{
  position:absolute;inset:0;z-index:2;pointer-events:none;
  background:radial-gradient(125% 105% at 50% 42%, rgba(3,6,18,0) 52%, rgba(3,6,18,.5) 86%, rgba(2,4,14,.74) 100%);
}
.galaxy-head{position:absolute;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:calc(var(--safe-top) + 10px) 14px 10px;}
.galaxy-stats{
  position:absolute;top:calc(var(--safe-top) + 62px);left:10%;width:80%;
  z-index:15;display:flex;align-items:center;justify-content:space-between;gap:22px;
  padding:13px 26px;border-radius:20px;
  background:rgba(10,18,48,.62);
  border:1px solid rgba(110,231,255,.22);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  box-shadow:0 12px 34px rgba(0,0,0,.4);
  opacity:0;animation:riseIn .8s .3s forwards;
}
.stat{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:86px;}
.stat-num{
  font-size:22px;font-weight:900;letter-spacing:.5px;
  background:linear-gradient(180deg,#fff,#9CC4FF);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  font-variant-numeric:tabular-nums;
}
.stat-label{font-size:11px;color:var(--text-faint);letter-spacing:1px;}
.stat-divider{width:1px;height:30px;background:rgba(255,255,255,.16);}
.galaxy-tip{
  position:absolute;top:calc(var(--safe-top) + 158px);left:0;right:0;z-index:15;
  text-align:center;font-size:11.5px;color:var(--text-faint);letter-spacing:1.5px;
  opacity:0;animation:riseIn .8s .5s forwards;
}
/* 远景/近景切换 */
.view-switch{
  position:absolute;right:14px;top:46%;transform:translateY(-50%);
  z-index:16;display:flex;flex-direction:column;gap:6px;
  padding:7px 6px;border-radius:18px;
  background:rgba(10,18,48,.66);
  border:1px solid rgba(110,231,255,.22);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  box-shadow:0 10px 28px rgba(0,0,0,.4);
  opacity:0;animation:riseIn .9s .6s forwards;
}
.vs-btn{
  width:42px;height:40px;border-radius:12px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  font-size:10.5px;font-weight:600;color:var(--text-faint);letter-spacing:.5px;
  transition:all .2s;
}
.vs-btn svg{opacity:.9;}
.vs-btn.on{
  color:#fff;background:linear-gradient(135deg,var(--blue-500),var(--blue-400));
  box-shadow:0 4px 14px rgba(46,124,255,.45);
}
.vs-btn:active{transform:scale(.92);}
/* 星河宣言气泡 */
.slogan-bubble{
  position:absolute;z-index:18;max-width:78vw;
  display:flex;align-items:center;gap:9px;
  padding:10px 14px 10px 10px;border-radius:16px;
  background:rgba(9,17,43,.82);
  border:1px solid rgba(110,231,255,.3);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  box-shadow:0 12px 30px rgba(0,0,0,.45);
  opacity:0;pointer-events:none;transition:opacity .25s, transform .25s;
  transform:translateY(8px) scale(.94);
}
.slogan-bubble.show{opacity:1;transform:none;}
.slogan-bubble .b-avatar{width:34px;height:34px;border-radius:50%;overflow:hidden;flex:none;box-shadow:0 0 0 2px rgba(110,231,255,.5);}
.slogan-bubble .b-avatar img{width:100%;height:100%;object-fit:cover;}
.slogan-bubble .b-txt{display:flex;flex-direction:column;gap:2px;}
.slogan-bubble .b-name{font-size:11.5px;color:var(--cyan-300);font-weight:500;}
.slogan-bubble .b-slogan{font-size:13px;line-height:1.4;font-weight:500;}
/* 随机飘过的宣言 */
.float-slogans{position:absolute;inset:0;z-index:12;pointer-events:none;overflow:hidden;}
.float-card{
  position:absolute;display:flex;align-items:center;gap:8px;
  max-width:64vw;padding:8px 13px 8px 8px;border-radius:14px;
  background:rgba(8,15,40,.78);border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  opacity:0;transform:translateY(14px);
  animation:floatIn 4.4s cubic-bezier(.2,.8,.3,1) forwards;
}
.float-card .f-avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex:none;}
.float-card .f-avatar img{width:100%;height:100%;object-fit:cover;}
.float-card .f-txt{display:flex;flex-direction:column;gap:1px;}
.float-card .f-name{font-size:10.5px;color:var(--text-faint);}
.float-card .f-slogan{font-size:12.5px;line-height:1.35;color:#fff;}
@keyframes floatIn{
  0%{opacity:0;transform:translateY(18px) scale(.9);}
  10%{opacity:1;transform:none;}
  88%{opacity:1;transform:none;}
  100%{opacity:0;transform:translateY(-16px) scale(.95);}
}
/* 指纹按钮 */
.finger-wrap{
  position:absolute;left:0;right:0;bottom:calc(var(--safe-bottom) + 22px);z-index:16;
  display:flex;flex-direction:column;align-items:center;gap:10px;
  pointer-events:none;opacity:0;animation:riseIn .9s .55s forwards;
}
.finger-btn{
  position:relative;width:78px;height:78px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:#fff;pointer-events:auto;
  background:radial-gradient(circle at 32% 28%, rgba(110,168,255,.4) 0%, rgba(27,91,255,.32) 55%, rgba(10,26,70,.4) 100%);
  box-shadow:0 0 16px rgba(110,231,255,.38),0 0 42px rgba(255,197,61,.24),inset 0 0 14px rgba(255,255,255,.1);
  backdrop-filter:blur(2px);
  transition:transform .18s, box-shadow .18s;
}
.finger-btn:active{transform:scale(.92);}
/* 指纹图标（黑底用 screen 混合融入按钮，金色脊线发光显现） */
.finger-icon{
  width:54px;height:54px;border-radius:50%;
  object-fit:cover;
  filter:brightness(1.25) drop-shadow(0 0 8px rgba(255,224,160,1)) drop-shadow(0 0 22px rgba(255,197,61,.8));
  animation:fingerGlow 2.4s ease-in-out infinite;
  pointer-events:none;
}
@keyframes fingerGlow{
  0%,100%{opacity:.72;transform:scale(1);}
  50%{opacity:.9;transform:scale(1.06);}
}
.finger-btn.charging{
  box-shadow:0 0 0 7px rgba(110,231,255,.22),0 0 34px rgba(110,231,255,.55),0 14px 40px rgba(46,124,255,.55),inset 0 2px 4px rgba(255,255,255,.4);
  animation:chargeGlow 1.1s ease-in-out infinite;
}
@keyframes chargeGlow{
  0%,100%{box-shadow:0 0 0 5px rgba(110,231,255,.18),0 0 22px rgba(110,231,255,.4),0 14px 40px rgba(46,124,255,.55),inset 0 2px 4px rgba(255,255,255,.4);}
  50%{box-shadow:0 0 0 10px rgba(110,231,255,.34),0 0 52px rgba(110,231,255,.8),0 14px 40px rgba(46,124,255,.55),inset 0 2px 4px rgba(255,255,255,.4);}
}
.finger-ring{
  position:absolute;inset:-11px;border-radius:50%;
  border:2px solid rgba(110,231,255,.55);
  animation:ringPulse 2.2s ease-out infinite;
}
.finger-ring::after{
  content:"";position:absolute;inset:-8px;border-radius:50%;
  border:2px solid rgba(255,197,61,.4);
  animation:ringPulse 2.2s .5s ease-out infinite;
}
@keyframes ringPulse{
  0%{transform:scale(.86);opacity:0;}
  30%{opacity:.9;}
  100%{transform:scale(1.5);opacity:0;}
}
.finger-label{font-size:12px;color:var(--text-dim);letter-spacing:2px;pointer-events:none;}
/* 长按进度环 */
.finger-progress{
  position:absolute;inset:-5px;border-radius:50%;
  background:conic-gradient(#FFD97A var(--p,0deg), rgba(255,255,255,0) 0);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 calc(100% - 4px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 calc(100% - 4px));
  opacity:0;transition:opacity .2s;pointer-events:none;
  filter:drop-shadow(0 0 6px rgba(255,197,61,.8));
}
.finger-progress.show{opacity:1;}
/* 长按引导文字 */
.finger-hint{
  font-size:12px;color:var(--cyan-300);letter-spacing:1.5px;font-weight:600;
  pointer-events:none;min-height:16px;text-align:center;
  opacity:.92;
}
.finger-hint.hot{color:#FFD97A;animation:hintPulse 1s ease-in-out infinite;}
.finger-hint.done{color:#7CFFB2;}
@keyframes hintPulse{
  0%,100%{opacity:.85;}
  50%{opacity:1;transform:scale(1.04);}
}
/* 承诺弹层 */
.modal{
  position:absolute;inset:0;z-index:40;
  display:flex;align-items:flex-end;justify-content:center;
  padding:0 0 var(--safe-bottom);
  background:rgba(3,6,18,.32);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  opacity:0;pointer-events:none;transition:opacity .3s;
}
.modal.show{opacity:1;pointer-events:auto;}
.modal-card{
  width:100%;max-width:420px;
  padding:26px 24px calc(18px + var(--safe-bottom));
  border-radius:26px 26px 0 0;
  background:linear-gradient(180deg,#122A5E21 0%,#0A1740 100%);
  border-top:1px solid rgba(110,231,255,.3);
  box-shadow:0 -20px 60px rgba(0,0,0,.5);
  transform:translateY(40px);transition:transform .4s cubic-bezier(.22,.9,.3,1);
}
.modal.show .modal-card{transform:none;}
.modal-ok{
  width:58px;height:58px;margin:0 auto;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#FFD97A,#FFB020);
  color:#4A2E00;box-shadow:0 8px 26px rgba(255,176,32,.5);
  animation:okPop .5s .15s cubic-bezier(.3,1.6,.4,1) both;
}
@keyframes okPop{from{transform:scale(0);}to{transform:scale(1);}}
.modal-title{margin-top:14px;text-align:center;font-size:19px;font-weight:900;letter-spacing:1px;}
.modal-sub{text-align:center;margin-top:6px;font-size:12.5px;color:var(--text-dim);}
.commit-card{
  margin-top:16px;padding:14px 16px;border-radius:16px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);
  display:flex;gap:11px;align-items:center;
}
.commit-card .c-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex:none;box-shadow:0 0 0 2px rgba(255,197,61,.6);}
.commit-card .c-avatar img{width:100%;height:100%;object-fit:cover;}
.commit-card .c-txt{display:flex;flex-direction:column;gap:3px;}
.commit-card .c-name{font-size:12px;color:var(--gold-300);font-weight:500;}
.commit-card .c-slogan{font-size:14.5px;line-height:1.5;font-weight:700;}
.promo-box{
  margin-top:14px;padding:13px 15px;border-radius:14px;
  background:linear-gradient(135deg, rgba(46,124,255,.16), rgba(110,231,255,.08));
  border:1px dashed rgba(110,231,255,.4);
  font-size:12.5px;line-height:1.8;color:var(--text-dim);
  text-align:center;
}
.promo-box b{color:var(--gold-300);font-weight:700;}
.modal-btn{
  margin-top:18px;width:100%;height:50px;border-radius:16px;
  display:flex;align-items:center;justify-content:center;gap:8px;
  font-size:16px;font-weight:700;letter-spacing:1px;color:#fff;
  background:linear-gradient(135deg,var(--blue-500),var(--blue-400));
  box-shadow:0 10px 26px rgba(46,124,255,.45);
  transition:transform .15s;
}
.modal-btn:active{transform:scale(.97);}
/* Toast */
.toast{
  position:fixed;left:50%;bottom:calc(var(--safe-bottom) + 40px);transform:translateX(-50%);
  z-index:90;padding:11px 20px;border-radius:999px;
  background:rgba(5,10,28,.88);color:#fff;font-size:13.5px;
  border:1px solid rgba(255,255,255,.18);
  box-shadow:0 10px 30px rgba(0,0,0,.4);
  opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;
  white-space:nowrap;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(-4px);}

/* 桌面端观感：内容居中，控制最大宽度 */
@media (min-width:560px){
  .home-actions,.poster-controls{max-width:480px;margin:0 auto;width:100%;}
  .poster-frame{width:300px;}
}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001s !important;animation-iteration-count:1 !important;transition-duration:.001s !important;}
}