/* ── Signin Runtime v2 · Apple TV Glass Style ── */
/* 升级日期: 2026-05-15 | 仅替换 Page 0 视觉 | 不改 mount/lifecycle/router/广告流程 */

/* ── Popup layer (固定 UI 卡片外层) ── */
/* memory feedback_fixed_ui_card_vs_responsive §0.1：absolute + safe-area 在外层处理 */
.signin-popup{
  display:none;
  position:absolute;inset:0;
  z-index:var(--z-signin);
  padding-bottom:env(safe-area-inset-bottom, 0px);
}
.signin-popup.open{display:block;}

/* ── Mask (兼容保留) ── */
.signin-mask{
  position:absolute;inset:0;
  background:rgba(0,0,0,0.65);
}

/* ── Panel (固定 UI 卡片) ── */
/* memory feedback_fixed_ui_card_vs_responsive §0.1：absolute + 固定 px + height:auto */
/* 永久禁止：vh / dvh / max-height / margin-bottom / translateY 100% / flex column panel */
.signin-panel{
  position:absolute;
  left:50%;
  bottom:12px;
  z-index:1;
  width:calc(100% - 24px);max-width:468px;
  height:auto;
  background:#0A0A0B;
  border-radius:28px;
  transform:translate(-50%, 800px);
  transition:transform 0.36s cubic-bezier(0.25,0.72,0,1);
  overflow:hidden;
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
.signin-popup.open .signin-panel{transform:translate(-50%, 0);}

/* 流光线条沿面板边缘绕一圈（彗星拖尾, 8s/周期） */
.signin-panel::before{
  content:'';
  position:absolute;inset:0;
  border-radius:inherit;
  padding:1.5px;
  background:conic-gradient(
    from var(--angle,0deg),
    transparent 0deg,
    transparent 295deg,
    rgba(255,255,255,0.10) 310deg,
    rgba(255,255,255,0.45) 325deg,
    rgba(255,255,255,1) 340deg,
    rgba(255,255,255,0.55) 350deg,
    rgba(255,255,255,0.15) 357deg,
    transparent 360deg);
  -webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);
  mask-composite:exclude;
  -webkit-filter:drop-shadow(0 0 5px rgba(255,255,255,0.7)) drop-shadow(0 0 12px rgba(255,255,255,0.35));
  filter:drop-shadow(0 0 5px rgba(255,255,255,0.7)) drop-shadow(0 0 12px rgba(255,255,255,0.35));
  -webkit-animation:rotateRing 8s linear infinite;
  animation:rotateRing 8s linear infinite;
  pointer-events:none;
  z-index:5;
}
@property --angle{syntax:'<angle>';initial-value:0deg;inherits:false;}
@-webkit-keyframes rotateRing{to{--angle:360deg;}}
@keyframes rotateRing{to{--angle:360deg;}}

/* ── Pages (固定 UI 卡片 page) ── */
/* memory §0.1：禁 flex:1 撑高 panel / 禁 safe-area 进 padding / 禁 overflow scroll */
/* page 高度跟内容走，panel overflow:hidden + 自身 auto 高度跟着撑 */
.sp-page{
  display:none;
  flex-direction:column;
  padding:20px 0 12px;
  overflow-x:hidden;
}
.sp-page.active{display:flex;}

/* Page 切换动画 (兼容保留 - 不能动) */
/* outgoing page 在动画期间 absolute 脱离 flex 流，避免与 incoming page 在 flex column 内上下堆叠产生重影 */
.sp-page.slide-out-up{
  display:flex;
  position:absolute;
  top:0;left:0;right:0;
  animation:spSlideOutUp 0.28s cubic-bezier(0.25,0.72,0,1) forwards;
}
.sp-page.slide-in-up{display:flex;animation:spSlideInUp 0.30s cubic-bezier(0.25,0.72,0,1) forwards;}
@keyframes spSlideOutUp{from{transform:translateY(0);opacity:1;}to{transform:translateY(-30%);opacity:0;}}
@keyframes spSlideInUp{from{transform:translateY(30%);opacity:0;}to{transform:translateY(0);opacity:1;}}

/* ── Page 0 签到面板 - 新视觉 ── */
.sp-header{padding:4px 16px 0;text-align:center;}
.sp-title{font-size:24px;font-weight:800;color:#FFF8EC;letter-spacing:-0.3px;line-height:1.2;}
.sp-hl{
  background:linear-gradient(135deg,#ffe066 0%,#f5c842 40%,#e8a800 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}
.sp-sub{font-size:12px;color:rgba(245,228,196,0.42);margin-top:6px;letter-spacing:0.8px;}

/* Ways */
.sp-ways{display:flex;flex-wrap:nowrap;align-items:center;justify-content:center;gap:6px;padding:14px 12px 6px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
.sp-ways::-webkit-scrollbar{display:none;}
.sp-ways .sp-way,.sp-ways .sp-ways-suffix{flex-shrink:0;}
.sp-way{font-size:12px;color:rgba(248,232,200,0.60);white-space:nowrap;letter-spacing:0.3px;display:inline-flex;align-items:center;gap:3px;background:transparent;padding:0;border-radius:0;}
.sp-ways-suffix{font-size:12px;color:rgba(245,210,140,0.45);white-space:nowrap;}

/* Days Grid - 7 等分自适应（强制一屏完整显示，不横滑） */
.sp-days{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:4px;
  padding:12px 16px 16px;
  overflow:hidden;
}
.sp-day{
  width:auto;min-width:0;
  padding:6px 2px 8px;border-radius:12px;
  background:transparent;border:none;
  display:flex;flex-direction:column;align-items:center;gap:2px;
  text-align:center;position:relative;
}

/* today 金色边框 - 外扩呼吸环（给金币 icon 留呼吸空间） */
.sp-day-today{background:transparent;border:none;box-shadow:none;position:relative;}
.sp-day-today::after{
  content:'';position:absolute;
  top:-7px;left:-3px;right:-3px;bottom:-7px;
  border:1px solid rgba(255,213,90,0.55);
  border-radius:14px;
  box-shadow:0 0 8px rgba(255,200,66,0.12);
  pointer-events:none;
  -webkit-animation:goldBreath 3s ease-in-out infinite;
  animation:goldBreath 3s ease-in-out infinite;
}
@-webkit-keyframes goldBreath{0%,100%{opacity:0.7;}50%{opacity:1;}}
@keyframes goldBreath{0%,100%{opacity:0.7;}50%{opacity:1;}}

.sp-day-label{font-size:11px;font-weight:600;color:rgba(245,228,196,0.42);white-space:nowrap;}
.sp-day-today .sp-day-label{color:#f5c842;}

/* Day icon (3D 立体) */
.sp-day-icon{
  width:48px;height:48px;max-width:100%;
  display:flex;align-items:center;justify-content:center;
  margin:0;
  perspective:600px;
}
.sp-day-icon img{
  width:100%;height:100%;display:block;object-fit:contain;
  transform-style:preserve-3d;
}

.sp-day-tag{font-size:10px;font-weight:600;color:rgba(245,210,122,0.7);letter-spacing:0.3px;white-space:nowrap;}
.sp-day-ai .sp-day-tag{color:rgba(139,156,246,0.8);}
.sp-day-vip .sp-day-tag{color:rgba(232,121,168,0.8);}
.sp-day-val{font-size:14px;font-weight:800;color:#f5d27a;letter-spacing:-0.3px;white-space:nowrap;}
.sp-day-ai .sp-day-val{color:#8b9cf6;}
.sp-day-vip .sp-day-val{color:#e879a8;}

/* ── 入场动画序列 (加快节奏 2.5s 内完成) ── */
.signin-panel.play .sp-days .sp-day:nth-child(1) .sp-day-icon img,
.signin-panel.play .sp-days .sp-day:nth-child(2) .sp-day-icon img,
.signin-panel.play .sp-days .sp-day:nth-child(3) .sp-day-icon img,
.signin-panel.play .sp-days .sp-day:nth-child(5) .sp-day-icon img{
  -webkit-animation:coinSpin 0.5s ease-out forwards;
  animation:coinSpin 0.5s ease-out forwards;
}
.signin-panel.play .sp-days .sp-day:nth-child(1) .sp-day-icon img{-webkit-animation-delay:0s;animation-delay:0s;}
.signin-panel.play .sp-days .sp-day:nth-child(2) .sp-day-icon img{-webkit-animation-delay:0.15s;animation-delay:0.15s;}
.signin-panel.play .sp-days .sp-day:nth-child(3) .sp-day-icon img{-webkit-animation-delay:0.30s;animation-delay:0.30s;}
.signin-panel.play .sp-days .sp-day:nth-child(5) .sp-day-icon img{-webkit-animation-delay:0.60s;animation-delay:0.60s;}

.signin-panel.play .sp-days .sp-day:nth-child(4) .sp-day-icon img,
.signin-panel.play .sp-days .sp-day:nth-child(6) .sp-day-icon img{
  -webkit-animation:aiPop 0.5s ease-in-out forwards;
  animation:aiPop 0.5s ease-in-out forwards;
}
.signin-panel.play .sp-days .sp-day:nth-child(4) .sp-day-icon img{-webkit-animation-delay:0.45s;animation-delay:0.45s;}
.signin-panel.play .sp-days .sp-day:nth-child(6) .sp-day-icon img{-webkit-animation-delay:0.75s;animation-delay:0.75s;}

.signin-panel.play .sp-days .sp-day:nth-child(7) .sp-day-icon img{
  -webkit-animation:vipReveal 0.7s cubic-bezier(0.34,1.56,0.64,1) 0.9s forwards;
  animation:vipReveal 0.7s cubic-bezier(0.34,1.56,0.64,1) 0.9s forwards;
}

@-webkit-keyframes coinSpin{0%{transform:rotateY(0);}100%{transform:rotateY(720deg);}}
@keyframes coinSpin{0%{transform:rotateY(0);}100%{transform:rotateY(720deg);}}
@-webkit-keyframes aiPop{0%{transform:scale(1);}40%{transform:scale(1.35);}100%{transform:scale(1);}}
@keyframes aiPop{0%{transform:scale(1);}40%{transform:scale(1.35);}100%{transform:scale(1);}}
@-webkit-keyframes vipReveal{0%{transform:scale(0.85) rotateZ(-12deg);}55%{transform:scale(1.30) rotateZ(8deg);}100%{transform:scale(1) rotateZ(0);}}
@keyframes vipReveal{0%{transform:scale(0.85) rotateZ(-12deg);}55%{transform:scale(1.30) rotateZ(8deg);}100%{transform:scale(1) rotateZ(0);}}

/* ── Actions (Apple TV 风按钮 - 双 CTA) ── */
.sp-actions{display:flex;gap:8px;padding:8px 16px 12px;opacity:0;transform:scale(0.6);}
.signin-panel.play .sp-actions{
  -webkit-animation:btnPop 0.45s cubic-bezier(0.34,1.56,0.64,1) 1.6s forwards;
  animation:btnPop 0.45s cubic-bezier(0.34,1.56,0.64,1) 1.6s forwards;
}
@-webkit-keyframes btnPop{0%{opacity:0;transform:scale(0.6);}60%{opacity:1;transform:scale(1.08);}100%{opacity:1;transform:scale(1);}}
@keyframes btnPop{0%{opacity:0;transform:scale(0.6);}60%{opacity:1;transform:scale(1.08);}100%{opacity:1;transform:scale(1);}}

.sp-btn-gold,.sp-btn-pink,.sp-btn-signin{
  flex:1;height:50px;border-radius:99px;
  display:flex;align-items:center;justify-content:center;gap:6px;
  font-size:14px;font-weight:600;cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  transition:transform 0.18s ease, background 0.2s ease;
  border:none;letter-spacing:0px;font-family:inherit;
  padding:0 10px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  min-width:0;
}
.sp-btn-i{width:20px;height:20px;flex-shrink:0;object-fit:contain;display:block;}
.sp-btn-gold:active,.sp-btn-pink:active,.sp-btn-signin:active{transform:scale(0.98);}
.sp-btn-pink:active{background:rgba(255,255,255,0.12);}

/* 主按钮 (Apple TV 白色实心) */
.sp-btn-gold,.sp-btn-signin{
  color:#15110a;
  background:linear-gradient(180deg,rgba(255,255,255,0.98) 0%,rgba(245,243,238,0.95) 100%);
  box-shadow:
    0 6px 20px rgba(0,0,0,0.45),
    inset 0 1px 0 rgba(255,255,255,1),
    inset 0 -1px 0 rgba(0,0,0,0.05);
}

/* 次按钮 (Apple TV 玻璃) */
.sp-btn-pink{
  flex:1.6;color:rgba(255,255,255,0.95);
  background:rgba(255,255,255,0.07);
  -webkit-backdrop-filter:blur(24px) saturate(180%);
  backdrop-filter:blur(24px) saturate(180%);
  border:1px solid rgba(255,255,255,0.18);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.12),0 2px 12px rgba(0,0,0,0.2);
}

/* ─────────────────────────────────────────────────────────────────────────
   公告页：奢侈品黑卡信封（Apple TV 质感）
   Runtime Boundary：全部 selector 走 .sp-notice-page 前缀强 scope
   生命周期：所有节点都是 page child，page destroy 时跟随销毁，零 panel root 污染
   ───────────────────────────────────────────────────────────────────────── */
.sp-notice-page{
  align-items:stretch;justify-content:flex-start;
  text-align:left;gap:0;
  /* memory §0.1：固定 px，禁 % / safe-area 进 panel 内 padding（safe-area 在外层 .signin-popup 处理）*/
  padding:24px 18px 12px;
  position:relative;
  overflow:hidden;
}

/* notice-envelope 装饰容器（仅顶 45%，flap 三角 + V 尖聚光） */
.sp-notice-page .notice-envelope{
  position:absolute;
  top:0;left:0;right:0;
  height:45%;
  pointer-events:none;
  z-index:0;
}

/* envelope flap */
.sp-notice-page .flap{
  position:absolute;top:0;
  width:50.5%;height:100%;
  background:linear-gradient(180deg,
    rgba(255,255,255,0.035) 0%,
    rgba(255,255,255,0.01) 28%,
    rgba(0,0,0,0.12) 100%);
  overflow:hidden;
}
.sp-notice-page .flap-left{
  left:-0.5%;
  -webkit-clip-path:polygon(16.1% 0,100% 0,100% 100%);
  clip-path:polygon(16.1% 0,100% 0,100% 100%);
  -webkit-filter:brightness(1.04);
  filter:brightness(1.04);
  -webkit-animation:flapLeftBreath 6s ease-in-out infinite;
  animation:flapLeftBreath 6s ease-in-out infinite;
}
.sp-notice-page .flap-right{
  right:-0.5%;
  -webkit-clip-path:polygon(0 0,83.9% 0,0 100%);
  clip-path:polygon(0 0,83.9% 0,0 100%);
  -webkit-filter:brightness(0.94);
  filter:brightness(0.94);
  -webkit-animation:flapRightBreath 6s ease-in-out -1.5s infinite;
  animation:flapRightBreath 6s ease-in-out -1.5s infinite;
}
@-webkit-keyframes flapLeftBreath{0%,100%{-webkit-filter:brightness(0.96);}50%{-webkit-filter:brightness(1.12);}}
@keyframes flapLeftBreath{0%,100%{filter:brightness(0.96);}50%{filter:brightness(1.12);}}
@-webkit-keyframes flapRightBreath{0%,100%{-webkit-filter:brightness(0.88);}50%{-webkit-filter:brightness(1.00);}}
@keyframes flapRightBreath{0%,100%{filter:brightness(0.88);}50%{filter:brightness(1.00);}}

/* envelope 顶部材质横扫反光 */
.sp-notice-page .flap-highlight{
  position:absolute;
  top:0;left:-20%;
  width:140%;height:24%;
  background:linear-gradient(90deg,
    transparent 0%,
    rgba(255,255,255,0.015) 20%,
    rgba(255,255,255,0.07) 50%,
    rgba(255,255,255,0.015) 80%,
    transparent 100%);
  -webkit-filter:blur(18px);filter:blur(18px);
  -webkit-animation:flapFlow 7s ease-in-out infinite;
  animation:flapFlow 7s ease-in-out infinite;
}
@-webkit-keyframes flapFlow{0%{-webkit-transform:translateX(-4%);opacity:.55;}50%{-webkit-transform:translateX(4%);opacity:1;}100%{-webkit-transform:translateX(-4%);opacity:.55;}}
@keyframes flapFlow{0%{transform:translateX(-4%);opacity:.55;}50%{transform:translateX(4%);opacity:1;}100%{transform:translateX(-4%);opacity:.55;}}

/* V 尖聚光（envelope 内 72% 处，呼吸） */
.sp-notice-page .v-glow{
  position:absolute;
  left:50%;top:72%;
  width:160px;height:90px;
  -webkit-transform:translateX(-50%) scale(1);
  transform:translateX(-50%) scale(1);
  background:radial-gradient(ellipse at center,
    rgba(255,255,255,0.08) 0%,
    rgba(255,255,255,0.03) 35%,
    transparent 75%);
  -webkit-filter:blur(18px);filter:blur(18px);
  pointer-events:none;
  opacity:0.7;
  -webkit-animation:vGlowBreath 5s ease-in-out infinite;
  animation:vGlowBreath 5s ease-in-out infinite;
}
@-webkit-keyframes vGlowBreath{0%,100%{opacity:0.55;-webkit-transform:translateX(-50%) scale(0.92);}50%{opacity:1;-webkit-transform:translateX(-50%) scale(1.08);}}
@keyframes vGlowBreath{0%,100%{opacity:0.55;transform:translateX(-50%) scale(0.92);}50%{opacity:1;transform:translateX(-50%) scale(1.08);}}

/* vshine 信封轮廓流光 SVG（绝对覆盖整个 page = panel 内可见区域） */
.sp-notice-page .vshine{
  position:absolute;
  inset:0;
  width:100%;height:100%;
  pointer-events:none;
  z-index:1;
  overflow:visible;
  shape-rendering:geometricPrecision;
}
.sp-notice-page .vshine-path{
  fill:none;
  stroke:rgba(255,250,245,0.55);
  stroke-width:0.45;
  stroke-linecap:butt;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
  -webkit-filter:
    drop-shadow(0 0.4px 0 rgba(0,0,0,0.22))
    drop-shadow(0 0 0.3px rgba(255,255,255,0.5))
    drop-shadow(0 0 1.5px rgba(255,250,240,0.22))
    drop-shadow(0 0 5px rgba(255,250,235,0.12))
    drop-shadow(0 0 12px rgba(255,250,235,0.04));
  filter:
    drop-shadow(0 0.4px 0 rgba(0,0,0,0.22))
    drop-shadow(0 0 0.3px rgba(255,255,255,0.5))
    drop-shadow(0 0 1.5px rgba(255,250,240,0.22))
    drop-shadow(0 0 5px rgba(255,250,235,0.12))
    drop-shadow(0 0 12px rgba(255,250,235,0.04));
  opacity:0.35;
  -webkit-animation:vshineBreath 4.5s ease-in-out infinite;
  animation:vshineBreath 4.5s ease-in-out infinite;
}
@-webkit-keyframes vshineBreath{0%,100%{opacity:0.35;stroke-width:0.35;}50%{opacity:1;stroke-width:0.7;}}
@keyframes vshineBreath{0%,100%{opacity:0.35;stroke-width:0.35;}50%{opacity:1;stroke-width:0.7;}}

/* notice header（打字机标题 + 日期） */
.sp-notice-page .sp-notice-header{padding:0 12px;text-align:center;position:relative;z-index:2;}
.sp-notice-page .sp-notice-title{
  font-size:22px;font-weight:800;
  color:#FFF8EC;letter-spacing:0.5px;line-height:1.3;
  width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;
  max-width:100%;
  margin:0 auto;
  text-align:left;
  white-space:nowrap;
  -webkit-clip-path:inset(0 100% 0 0);
  clip-path:inset(0 100% 0 0);
  -webkit-animation:twTyping 1.0s steps(5,end) 0.3s forwards;
  animation:twTyping 1.0s steps(5,end) 0.3s forwards;
}
.sp-notice-page .sp-notice-title .sp-hl{
  background:linear-gradient(135deg,#ffe066 0%,#f5c842 40%,#e8a800 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}
@-webkit-keyframes twTyping{to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);}}
@keyframes twTyping{to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);}}
.sp-notice-page .sp-notice-date{
  font-size:11px;font-weight:500;
  color:rgba(245,210,140,0.55);
  letter-spacing:0.6px;
  margin-top:4px;
  text-align:center;
}

/* notice 内容 - 固定 UI 卡片（跨设备绝对一致）*/
/* memory §0.1：禁 flex:1 撑大 panel。card 高度固定，内容超长由 .sp-notice-content 自己 scroll */
.sp-notice-page .sp-notice-card{
  margin:6px 14px 0;padding:0;
  background:transparent;border:none;
  display:block;
  position:relative;
  z-index:2;
}
.sp-notice-page .sp-notice-content{
  font-size:12px;
  color:rgba(248,236,210,0.85);
  line-height:1.55;letter-spacing:0.2px;
  text-align:left;white-space:pre-line;
  width:100%;
  height:220px;           /* 固定 px 高度 - 跨设备一致 */
  overflow-y:auto;        /* 内容超长内部 scroll（不撑大 panel） */
  overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
.sp-notice-page .sp-notice-content::-webkit-scrollbar{display:none;}
.sp-notice-page .sp-notice-content a{
  background:linear-gradient(135deg,#ffe066 0%,#f5c842 40%,#e8a800 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  text-decoration:underline;
  text-decoration-color:rgba(245,200,66,0.55);
  text-underline-offset:3px;
  font-weight:600;
  word-break:break-all;
}

/* 公告页 swipe hint：只箭头动 + 金属香槟色 */
.sp-notice-page .sp-swipe-hint{position:relative;z-index:2;}
.sp-notice-page .sp-swipe-arrow,
.sp-notice-page .sp-swipe-hint svg{
  color:rgba(232,215,175,0.88);
  -webkit-filter:drop-shadow(0 0 4px rgba(245,210,140,0.55)) drop-shadow(0 1px 0 rgba(0,0,0,0.4));
  filter:drop-shadow(0 0 4px rgba(245,210,140,0.55)) drop-shadow(0 1px 0 rgba(0,0,0,0.4));
  -webkit-animation:spHintGlow 1.6s ease-in-out infinite;
  animation:spHintGlow 1.6s ease-in-out infinite;
}
.sp-notice-page .sp-swipe-t1,
.sp-notice-page .sp-swipe-hint span{
  color:rgba(232,215,175,0.82);
  text-shadow:0 0 8px rgba(245,210,140,0.45),0 1px 0 rgba(0,0,0,0.5);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  letter-spacing:2px;
}

/* 公告页降级：reduced-motion / lowend / slow-net */
@media (prefers-reduced-motion: reduce){
  .sp-notice-page .flap-left,
  .sp-notice-page .flap-right,
  .sp-notice-page .flap-highlight,
  .sp-notice-page .v-glow,
  .sp-notice-page .vshine-path,
  .sp-notice-page .sp-notice-title{animation:none!important;-webkit-animation:none!important;}
  .sp-notice-page .sp-notice-title{-webkit-clip-path:inset(0 0 0 0)!important;clip-path:inset(0 0 0 0)!important;}
  .sp-notice-page .vshine-path{opacity:0.7!important;stroke-width:0.5!important;}
}
html.lowend .sp-notice-page .flap-left,
html.lowend .sp-notice-page .flap-right,
html.lowend .sp-notice-page .flap-highlight,
html.lowend .sp-notice-page .v-glow,
html.lowend .sp-notice-page .vshine-path,
html.lowend .sp-notice-page .sp-notice-title{animation:none!important;-webkit-animation:none!important;}
html.lowend .sp-notice-page .sp-notice-title{-webkit-clip-path:inset(0 0 0 0)!important;clip-path:inset(0 0 0 0)!important;}
html.lowend .sp-notice-page .vshine-path{opacity:0.6!important;stroke-width:0.5!important;filter:drop-shadow(0 0 1px rgba(255,255,255,0.3))!important;-webkit-filter:drop-shadow(0 0 1px rgba(255,255,255,0.3))!important;}
html.lowend .sp-notice-page .v-glow{opacity:0.5!important;-webkit-filter:blur(8px);filter:blur(8px);}
html.lowend .sp-notice-page .flap-highlight{display:none!important;}
html.slow-net .sp-notice-page .flap-left,
html.slow-net .sp-notice-page .flap-right,
html.slow-net .sp-notice-page .v-glow,
html.slow-net .sp-notice-page .vshine-path,
html.slow-net .sp-notice-page .sp-notice-title{animation:none!important;-webkit-animation:none!important;}
html.slow-net .sp-notice-page .sp-notice-title{-webkit-clip-path:inset(0 0 0 0)!important;clip-path:inset(0 0 0 0)!important;}
html.slow-net .sp-notice-page .vshine-path{opacity:0.6!important;}
html.slow-net .sp-notice-page .flap-highlight{opacity:0.4!important;}

/* ── Ad page (兼容保留) ── */
.sp-ad-page{padding:14px 14px 8px;gap:0;}
.sp-ad-bg{position:relative;width:100%;aspect-ratio:800/380;flex-shrink:0;background-size:cover;background-position:center;border-radius:16px 16px 4px 4px;overflow:hidden;}
.sp-ad-footer{flex-shrink:0;background:rgba(14,16,28,0.75);border-radius:4px 4px 16px 16px;padding:12px 16px;display:flex;align-items:center;gap:14px;}
.sp-ad-icon{width:48px;height:48px;border-radius:12px;flex-shrink:0;background-size:cover;background-position:center;background-color:var(--L2);}
.sp-ad-texts{flex:1;min-width:0;}
.sp-ad-name{font-size:15px;font-weight:700;color:#FFF8EC;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sp-ad-sub{font-size:12px;color:rgba(245,228,196,0.42);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sp-ad-open{
  --ad-accent:120,100,255; /* 默认紫色（兼容旧 schema 无 accentColor 时） */
  flex-shrink:0;
  background:linear-gradient(135deg,rgba(var(--ad-accent),0.45),rgba(var(--ad-accent),0.25));
  border:1px solid rgba(var(--ad-accent),0.45);
  color:#FFF8EC;font-size:14px;font-weight:700;
  padding:8px 22px;border-radius:99px;cursor:pointer;letter-spacing:0.5px;
  -webkit-tap-highlight-color:transparent;
  transition:opacity 0.15s ease;
}
.sp-ad-open:active{opacity:0.7;}

/* 新 schema：渐变背景广告（is-gradient 标记，无图片只有 CSS gradient） */
.sp-ad-page.is-gradient .sp-ad-bg{background-color:transparent;}

/* 新 schema：字符 icon（Unicode ▶/✦/¥，不是 URL） */
.sp-ad-icon.sp-ad-symbol-icon{
  background-color:transparent;
  display:flex;align-items:center;justify-content:center;
  color:#fff;
  font-size:24px;font-weight:700;line-height:1;
  text-shadow:0 1px 3px rgba(0,0,0,0.45);
}

/* ── Swipe Hint - 上滑查看更多福利 ── */
/* memory §0.1：删 margin-top:auto / sticky / env(safe-area) / z-index */
/* 卡片内自然流式布局，外层 .signin-popup padding-bottom 已处理 safe-area */
.sp-swipe-hint{
  display:flex;flex-direction:row;
  align-items:center;justify-content:center;gap:8px;
  padding:16px 0 14px;
  opacity:0;
  background:linear-gradient(180deg,transparent 0%,#0A0A0B 40%,#0A0A0B 100%);
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
.signin-panel.play .sp-swipe-hint{
  -webkit-animation:hintFadeIn 0.5s ease-out 2.1s forwards,spHintGlow 1.6s ease-in-out 2.6s infinite;
  animation:hintFadeIn 0.5s ease-out 2.1s forwards,spHintGlow 1.6s ease-in-out 2.6s infinite;
}
@-webkit-keyframes hintFadeIn{0%{opacity:0;transform:translateY(10px);}100%{opacity:0.55;transform:translateY(0);}}
@keyframes hintFadeIn{0%{opacity:0;transform:translateY(10px);}100%{opacity:0.55;transform:translateY(0);}}
.sp-swipe-hint svg{width:16px;height:16px;display:block;color:rgba(248,232,200,0.85);-webkit-filter:drop-shadow(0 0 4px rgba(245,210,140,0.45));filter:drop-shadow(0 0 4px rgba(245,210,140,0.45));}
.sp-swipe-hint span{font-size:12px;font-weight:600;letter-spacing:1.5px;color:rgba(248,232,200,0.85);text-shadow:0 0 6px rgba(245,210,140,0.35);}
@-webkit-keyframes spHintGlow{0%,100%{opacity:0.55;-webkit-transform:translateY(0);}50%{opacity:1;-webkit-transform:translateY(-3px);}}
@keyframes spHintGlow{0%,100%{opacity:0.55;transform:translateY(0);}50%{opacity:1;transform:translateY(-3px);}}

/* skip 模式 (sessionStorage 已播放 / reduced-motion / 低端机)：跳到终态 */
.signin-panel.skip .sp-day-icon img,
.signin-panel.skip .sp-actions,
.signin-panel.skip .sp-swipe-hint,
.signin-panel.skip .sp-day-today::after{animation:none!important;}
.signin-panel.skip .sp-actions{opacity:1!important;transform:none!important;}
.signin-panel.skip .sp-swipe-hint{opacity:0.55!important;transform:none!important;}
.signin-panel.skip .sp-day-today::after{opacity:0.85!important;}

/* ── 性能降级 Level 1: backdrop-filter fallback (老 WebView / Telegram) ── */
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .sp-btn-pink{background:rgba(255,255,255,0.14)!important;}
}

/* ── 性能降级 Level 1: prefers-reduced-motion ── */
@media (prefers-reduced-motion: reduce){
  .signin-panel::before,
  .sp-day-icon img,
  .sp-actions,
  .sp-swipe-hint,
  .sp-day-today::after{animation:none!important;transition:none!important;}
  .sp-actions{opacity:1!important;transform:none!important;}
  .sp-swipe-hint{opacity:0.55!important;transform:none!important;}
  .sp-day-today::after{opacity:0.85!important;}
}

/* ── 性能降级 Level 2: 低端机 (JS html.lowend) - 关重动画 + 关 blur ── */
html.lowend .signin-panel::before{display:none;}
html.lowend .sp-day-icon img{animation:none!important;transform:none!important;}
html.lowend .sp-btn-pink{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(255,255,255,0.12);}
html.lowend .sp-btn-gold{box-shadow:0 2px 8px rgba(0,0,0,0.3);}
html.lowend .sp-day-today::after{box-shadow:0 0 4px rgba(255,200,66,0.20);animation:none!important;}
html.lowend .sp-swipe-hint{animation:none!important;opacity:0.7;}
html.lowend .sp-actions{opacity:1!important;transform:none!important;animation:none!important;}

/* ── 性能降级 Level 2: 弱网 / 中端机 (JS html.slow-net) - 降级动画强度 ── */
html.slow-net .sp-day-icon img{animation:none!important;}
html.slow-net .signin-panel::before{opacity:0.35;}
html.slow-net .sp-btn-pink{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);}
html.slow-net .sp-actions{opacity:1!important;transform:none!important;animation:none!important;}

/* ── Responsive ── */
/* memory §0.1 删除：@media (max-height:700px){.signin-panel{height:70vh;}} */
@media (max-width:375px){.signin-panel{min-height:320px;}.sp-day-icon{width:42px;height:42px;}}
@media (max-width:340px){.sp-day-icon{width:38px;height:38px;}.sp-day-label{font-size:10px;}.sp-day-tag{font-size:9px;}.sp-day-val{font-size:13px;}}
