/* =========================================================================
   中秋车主灯谜会 · 活动页样式
   主题：月华宣纸（浅色 · 暖金 · 精致）
   ========================================================================= */

:root{
  /* 纸面层次 */
  --paper-0:#FFFDF8;
  --paper-1:#FFF8EC;
  --paper-2:#FDF0DE;
  --paper-3:#F7E4C9;

  /* 墨色文字 */
  --ink:#2F2718;
  --ink-2:#57482F;
  --ink-3:#8B7A61;
  --ink-4:#B0A08A;

  /* 金桂主色 */
  --moon:#E0A93B;
  --moon-bright:#FFF0CC;
  --gold:#C8901E;
  --gold-deep:#9E6E12;
  --gold-soft:#F3DDA8;
  --orange:#E8562A;
  --coral:#FF7A45;
  --osmanthus:#E2A23C;
  --jade:#2F8F7A;

  /* 描边与投影 */
  --line:rgba(200,144,30,.26);
  --line-soft:rgba(200,144,30,.15);
  --card:rgba(255,255,255,.88);
  --shadow:0 20px 44px -26px rgba(150,105,40,.42), 0 2px 8px -4px rgba(150,105,40,.14);
  --shadow-sm:0 10px 26px -18px rgba(150,105,40,.45);
  --radius:20px;
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
[hidden]{display:none !important;}
html,body{margin:0;padding:0;height:100%;}
body{
  background:var(--paper-0);
  color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  font-size:15px;line-height:1.6;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;border:none;background:none;color:inherit;cursor:pointer;}
input{font-family:inherit;}
h1,h2,h3,p,ol,ul{margin:0;padding:0;}
ol,ul{list-style:none;}

#app{
  position:relative;min-height:100vh;
  max-width:460px;margin:0 auto;
  display:flex;flex-direction:column;
  overflow:hidden;
}

/* ============================ 背景：暖白纸面 + 月华 ============================ */
.sky{position:fixed;inset:0;max-width:460px;margin:0 auto;z-index:0;overflow:hidden;
  background:
    radial-gradient(120% 62% at 50% -8%, #FFFDF7 0%, #FFF7EA 38%, #FDEFDD 70%, #F9E6CB 100%),
    linear-gradient(180deg,#FFFDF8 0%,#FFF8EC 52%,#FBECDA 100%);
}
.sky::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(90% 46% at 84% 4%, rgba(240,190,90,.20), transparent 62%);}

/* 细碎金尘（替代深色星点） */
.stars{position:absolute;inset:0;}
.stars i{position:absolute;background:#E3B455;border-radius:50%;opacity:.4;
  animation:twinkle 3.6s ease-in-out infinite;}
.stars i:nth-child(3n){background:#F0C877;}
.stars i:nth-child(4n){background:#CFA95C;}
.stars i:nth-child(5n){box-shadow:0 0 6px 1px rgba(227,180,85,.75);}
@keyframes twinkle{0%,100%{opacity:.12;transform:scale(.7)}50%{opacity:.6;transform:scale(1.15)}}

.moon-halo{position:absolute;top:-70px;right:-50px;width:250px;height:250px;border-radius:50%;
  background:radial-gradient(circle, rgba(246,200,110,.30) 0%, rgba(246,200,110,.11) 40%, rgba(246,200,110,0) 72%);
  filter:blur(6px);animation:haloPulse 7s ease-in-out infinite;}
@keyframes haloPulse{0%,100%{opacity:.72;transform:scale(1)}50%{opacity:1;transform:scale(1.07)}}

.moon-full{position:absolute;top:-34px;right:-34px;width:92px;height:92px;border-radius:50%;
  background:radial-gradient(circle at 36% 32%, #FFFAEB 0%, #FFDFA0 56%, #E9B455 100%);
  box-shadow:0 0 58px 14px rgba(240,190,90,.42), inset -10px -8px 26px rgba(190,140,50,.26);
  opacity:.9;}
.moon-full::after{content:"";position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle at 70% 70%, rgba(255,255,255,.5), transparent 55%);}

/* 云：浅色柔光带 */
.cloud{position:absolute;border-radius:100px;
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.85),rgba(255,255,255,0));
  filter:blur(10px);}
.c1{width:230px;height:44px;top:64px;left:-80px;animation:drift 34s linear infinite;}
.c2{width:300px;height:56px;top:150px;left:-140px;animation:drift 52s linear infinite 6s;}
.c3{width:190px;height:38px;top:246px;left:-100px;animation:drift 44s linear infinite 14s;}
@keyframes drift{from{transform:translateX(0)}to{transform:translateX(560px)}}

/* 远山：淡墨青灰，留出宣纸呼吸感 */
.hills{position:absolute;left:0;right:0;bottom:0;height:190px;pointer-events:none;
  background:
    radial-gradient(60% 100% at 12% 100%, rgba(214,199,172,.62) 0%, rgba(214,199,172,0) 100%),
    radial-gradient(70% 100% at 88% 100%, rgba(205,190,164,.55) 0%, rgba(205,190,164,0) 100%),
    radial-gradient(90% 120% at 50% 118%, rgba(220,205,178,.85) 0%, rgba(220,205,178,0) 78%);}
.hills::after{content:"";position:absolute;left:0;right:0;bottom:0;height:70px;
  background:radial-gradient(70% 100% at 50% 100%, rgba(245,185,95,.20), transparent 72%);}

/* 飘落的金桂 */
.petals{position:absolute;inset:0;pointer-events:none;}
.petal{position:absolute;top:-24px;font-size:13px;opacity:0;
  animation:petalFall linear infinite;will-change:transform,opacity;filter:blur(.2px);}
@keyframes petalFall{
  0%{opacity:0;transform:translate3d(0,-30px,0) rotate(0deg)}
  8%{opacity:.62}
  85%{opacity:.5}
  100%{opacity:0;transform:translate3d(var(--dx,40px),108vh,0) rotate(420deg)}
}

/* ============================ 页脚：运营入口 ============================ */
.page-footer{position:relative;z-index:5;text-align:center;padding:6px 0 calc(14px + var(--safe-bottom));}
.page-footer.hide{display:none;}
.page-footer .admin-entry{display:inline-flex;align-items:center;gap:5px;font-size:11px;line-height:1;
  color:var(--ink-4);text-decoration:none;letter-spacing:1.2px;padding:6px 13px 6px 11px;border-radius:999px;
  border:1px solid var(--line-soft);background:rgba(255,253,248,.42);
  transition:color .25s,border-color .25s,background .25s,box-shadow .25s;}
.page-footer .admin-entry svg{width:13px;height:13px;flex:none;opacity:.9;}
.page-footer .admin-entry:hover,.page-footer .admin-entry:active{
  color:var(--gold-deep);border-color:var(--line);background:rgba(255,253,248,.86);
  box-shadow:0 6px 16px -10px rgba(150,105,40,.5);}

/* ============================ 天光：流星 ============================ */
.shooting{position:absolute;top:12%;left:-8%;width:130px;height:1.5px;border-radius:2px;
  background:linear-gradient(90deg,rgba(224,169,59,.0),rgba(224,169,59,.85),rgba(255,240,204,.5),transparent);
  opacity:0;transform:rotate(26deg);animation:shoot 11s linear infinite;}
.shooting.s2{top:26%;left:-14%;animation-delay:5.5s;animation-duration:13s;width:100px;}
@keyframes shoot{
  0%{opacity:0;transform:rotate(26deg) translateX(0)}
  1.5%{opacity:.8}
  7%{opacity:0;transform:rotate(26deg) translateX(560px)}
  100%{opacity:0;transform:rotate(26deg) translateX(560px)}
}

/* ============================ HUD ============================ */
.hud{
  position:relative;z-index:5;
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:calc(10px + var(--safe-top)) 14px 8px;
}
.hud-brand{font-size:13px;font-weight:700;letter-spacing:.5px;color:var(--gold-deep);
  padding:5px 12px;border-radius:100px;border:1px solid var(--line);
  background:rgba(255,255,255,.82);box-shadow:var(--shadow-sm);
  max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hud-stats{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-3);
  padding:5px 10px;border-radius:100px;background:rgba(255,255,255,.8);
  border:1px solid var(--line-soft);box-shadow:var(--shadow-sm);}
.chip b{color:var(--gold-deep);font-size:13px;}
.dot-frag{width:8px;height:8px;border-radius:2px;background:linear-gradient(135deg,#EFC158,#E8562A);}
.dot-chance{width:8px;height:8px;border-radius:50%;background:var(--jade);box-shadow:0 0 8px rgba(47,143,122,.55);}

/* ============================ 屏幕切换 ============================ */
main{position:relative;z-index:4;flex:1;display:flex;}
.screen{display:none;flex-direction:column;width:100%;padding:6px 18px calc(26px + var(--safe-bottom));}
.screen.active{display:flex;animation:screenIn .42s cubic-bezier(.22,1,.36,1);}
@keyframes screenIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

/* ============================ 通用按钮 ============================ */
.btn{display:flex;align-items:center;justify-content:center;gap:8px;
  height:50px;border-radius:14px;font-size:16px;font-weight:700;
  transition:transform .16s ease, box-shadow .22s ease, opacity .2s;position:relative;overflow:hidden;
  width:100%;margin-top:12px;}
.btn:active{transform:scale(.975);}
.btn:disabled{opacity:.45;}
.btn-lg{height:54px;font-size:17px;border-radius:16px;}
.btn-primary{
  background:linear-gradient(135deg,#FFA85F 0%,#F4703A 46%,#D94A17 100%);
  color:#fff;box-shadow:0 14px 30px -12px rgba(217,74,23,.6), inset 0 1px 0 rgba(255,255,255,.45),
    inset 0 -2px 6px rgba(140,45,5,.2);}
.btn-gold{
  background:linear-gradient(135deg,#FFEAB4 0%,#EFC158 48%,#CF9A25 100%);
  color:#4A3006;box-shadow:0 12px 28px -14px rgba(200,144,30,.75), inset 0 1px 0 rgba(255,255,255,.7);}
.btn-ghost{border:1px solid var(--line);background:rgba(255,255,255,.86);color:var(--ink-2);
  box-shadow:var(--shadow-sm);}
.btn-link{background:none;color:var(--ink-3);font-size:14px;font-weight:500;height:auto;padding:12px 0;margin-top:6px;
  text-decoration:underline;text-underline-offset:4px;text-decoration-color:rgba(139,122,97,.35);}
.btn-shine{position:absolute;top:0;left:-60%;width:45%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.6),transparent);
  animation:shine 3.2s ease-in-out infinite;}
@keyframes shine{0%{left:-60%}55%{left:130%}100%{left:130%}}

/* ============================ 加载 ============================ */
#scr-loading{align-items:center;justify-content:center;}
.loader{display:flex;flex-direction:column;align-items:center;gap:20px;color:var(--ink-3);font-size:14px;}
.loader-moon{width:56px;height:56px;border-radius:50%;
  background:radial-gradient(circle at 36% 32%, #FFFAEB, #FFDFA0 58%, #E9B455);
  box-shadow:0 0 34px 10px rgba(240,190,90,.45);
  animation:moonBreath 1.8s ease-in-out infinite;}
@keyframes moonBreath{0%,100%{transform:scale(.9);opacity:.78}50%{transform:scale(1.08);opacity:1}}

/* ============================ 未开始/已结束 ============================ */
#scr-closed{align-items:center;justify-content:center;text-align:center;}
.closed-card{background:var(--card);backdrop-filter:blur(10px);border:1px solid var(--line);
  border-radius:22px;padding:34px 24px;width:100%;}
.closed-emoji{line-height:1;margin-bottom:14px;}
.closed-emoji svg{overflow:visible;}
.closed-emoji [hidden]{display:none;}
.closed-emoji .ce-halo{animation:haloBreath 3s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
@keyframes haloBreath{0%,100%{opacity:.45;transform:scale(.94)}50%{opacity:.9;transform:scale(1.05)}}
.closed-card h2{font-size:21px;margin-bottom:10px;}
.closed-card p{color:var(--ink-3);font-size:14px;}
.closed-tip{margin-top:8px;color:var(--gold)!important;font-size:13px;}
#closedRange{color:var(--gold-deep);font-weight:600;}

/* ============================ 首页 ============================ */
#scr-home{padding-top:4px;}
.brand-chip{align-self:center;font-size:12px;color:var(--gold-deep);letter-spacing:1px;
  padding:5px 14px;border-radius:100px;border:1px solid var(--line);background:rgba(255,255,255,.86);
  box-shadow:var(--shadow-sm);margin-bottom:14px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hero-title{font-size:31px;line-height:1.28;font-weight:800;text-align:center;letter-spacing:1.5px;
  color:var(--ink);text-shadow:0 4px 18px rgba(200,144,30,.16);}
.hero-title span{
  background:linear-gradient(100deg,#E9A93C 0%,#C8901E 46%,#D9541F 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;}
.hero-sub{text-align:center;color:var(--ink-3);font-size:13.5px;margin-top:10px;letter-spacing:.5px;}

/* 首页装饰分隔 */
.orn{display:flex;align-items:center;justify-content:center;gap:10px;margin:14px 0 2px;}
.orn i{height:1px;width:54px;background:linear-gradient(90deg,rgba(200,144,30,0),rgba(200,144,30,.55));}
.orn i:last-child{background:linear-gradient(90deg,rgba(200,144,30,.55),rgba(200,144,30,0));}
.orn span{font-size:9px;color:rgba(200,144,30,.85);}

.hero-visual{position:relative;height:212px;margin:6px 0 2px;}
.hero-scene{width:100%;height:100%;display:block;filter:drop-shadow(0 16px 30px rgba(200,144,30,.2));}
.hs-moon{animation:floatY 5.4s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
.hs-ln{animation:swing 3.6s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 0;}
.hs-ln2{animation-duration:4.4s;animation-delay:.9s;}
.hs-bunny{animation:bunnyHop 2.8s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
.hs-cloud{animation:cloudDrift 9s ease-in-out infinite;transform-box:fill-box;}
.hs-cloud.c2{animation-duration:12s;animation-delay:2s;}
.hs-star{animation:twinkle 3.2s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
.hs-star.s2{animation-delay:1.2s;}
.hs-star.s3{animation-delay:2.1s;}
.hs-osmanthus{animation:floatY 4.6s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
@keyframes bunnyHop{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes cloudDrift{0%,100%{transform:translateX(0)}50%{transform:translateX(9px)}}
@keyframes twinkle{0%,100%{opacity:.3;transform:scale(.8)}50%{opacity:.95;transform:scale(1.15)}}
@keyframes swing{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}

.home-meta{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:4px 16px;backdrop-filter:blur(8px);}
.meta-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line-soft);}
.meta-row:last-child{border-bottom:none;}
.meta-k{color:var(--ink-3);font-size:13px;}
.meta-v{color:var(--ink);font-size:13.5px;font-weight:600;text-align:right;}

.my-status{margin-top:14px;background:linear-gradient(180deg,rgba(255,246,225,.95),rgba(255,253,248,.9));
  border:1px solid var(--line);border-radius:14px;padding:12px 16px;text-align:center;box-shadow:var(--shadow-sm);}
.ms-line{font-size:13px;color:var(--ink-3);}
.ms-line b{color:var(--gold-deep);font-size:15px;}
.ms-fragbar{display:flex;gap:6px;justify-content:center;margin-top:9px;}
.ms-fragbar i{width:34px;height:7px;border-radius:4px;background:rgba(200,144,30,.16);}
.ms-fragbar i.on{background:linear-gradient(90deg,#EFC158,#E8562A);box-shadow:0 0 10px rgba(200,144,30,.5);}

/* ============================ 卡片质感统一 ============================ */
.panel,.home-meta,.result-card,.closed-card,.collect-info{
  box-shadow:var(--shadow), inset 0 1px 0 rgba(255,255,255,.92);
}

/* ============================ 表单 ============================ */
.panel{background:var(--card);backdrop-filter:blur(10px);border:1px solid var(--line);
  border-radius:22px;padding:26px 20px 24px;margin-top:12px;}
.panel-head{text-align:center;margin-bottom:20px;}
.panel-head h2{font-size:21px;margin-bottom:6px;letter-spacing:.5px;}
.panel-head p{font-size:13px;color:var(--ink-3);}
.field{display:block;margin-bottom:15px;}
.field>span{display:block;font-size:13px;color:var(--ink-2);margin-bottom:7px;font-weight:600;}
.field>span b{color:var(--orange);font-weight:700;}
.field input{width:100%;height:50px;border-radius:13px;padding:0 15px;font-size:16px;
  background:rgba(255,255,255,.92);border:1px solid rgba(200,144,30,.28);color:var(--ink);outline:none;
  transition:border-color .2s, background .2s, box-shadow .2s;}
.field input::placeholder{color:var(--ink-4);font-size:14px;}
.field input:focus{border-color:rgba(200,144,30,.7);background:#fff;
  box-shadow:0 0 0 3px rgba(200,144,30,.13);}
.field.err input{border-color:#D94A3A;animation:shake .4s;}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.panel-tip{font-size:11.5px;color:var(--ink-4);text-align:center;margin-top:14px;line-height:1.6;}

/* ============================ 答题 ============================ */
.quiz-top{margin:6px 0 12px;}
.quiz-progress{display:flex;align-items:center;gap:10px;}
.qbar{flex:1;height:8px;border-radius:100px;background:rgba(200,144,30,.16);overflow:hidden;}
.qbar i{display:block;height:100%;width:0;border-radius:100px;
  background:linear-gradient(90deg,#F7DFA4,#EFC158,#E8562A);
  box-shadow:0 0 12px rgba(200,144,30,.45);transition:width .45s cubic-bezier(.22,1,.36,1);}
.qidx{font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums;}
.qidx b{color:var(--gold-deep);font-size:17px;}
.quiz-hint{font-size:12px;color:var(--ink-4);margin-top:8px;}
.quiz-hint b{color:var(--gold);}

/* 灯谜卡：灯笼罩外形 + 宣纸质感 */
.lantern-card{position:relative;margin-top:6px;}
.lantern-cap{height:16px;width:52%;margin:0 auto;border-radius:8px 8px 0 0;
  background:linear-gradient(180deg,#F2CE79,#C8901E);
  box-shadow:0 2px 10px rgba(200,144,30,.4);}
.lantern-body{
  background:
    repeating-linear-gradient(90deg, rgba(200,144,30,.05) 0 1px, rgba(200,144,30,0) 1px 13px),
    linear-gradient(180deg, rgba(255,255,255,.97), rgba(255,249,238,.93));
  backdrop-filter:blur(12px);
  border:1px solid var(--line);border-left:2px solid rgba(200,144,30,.5);border-right:2px solid rgba(200,144,30,.5);
  border-radius:0 0 22px 22px;padding:22px 18px 20px;min-height:290px;
  box-shadow:0 22px 50px -28px rgba(150,105,40,.5), inset 0 1px 0 rgba(255,255,255,.95);}
.lantern-tail{height:14px;width:8px;margin:0 auto;background:linear-gradient(180deg,#C8901E,transparent);border-radius:0 0 4px 4px;}
.q-no{font-size:12px;color:var(--gold);letter-spacing:1px;margin-bottom:9px;}
.q-no b{font-size:16px;}
.q-text{font-size:17.5px;line-height:1.62;font-weight:700;margin-bottom:18px;letter-spacing:.3px;color:var(--ink);}

.opts{display:flex;flex-direction:column;gap:10px;}
.opt{display:flex;align-items:flex-start;gap:11px;padding:13px 14px;border-radius:14px;text-align:left;
  background:rgba(255,255,255,.9);border:1px solid rgba(200,144,30,.22);
  font-size:14.5px;line-height:1.5;color:var(--ink-2);transition:all .18s ease;width:100%;}
.opt .key{flex:0 0 24px;height:24px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-size:12.5px;font-weight:800;background:rgba(200,144,30,.14);color:var(--gold-deep);transition:all .18s;}
.opt:active{transform:scale(.988);}
.opt.sel{border-color:rgba(200,144,30,.7);background:rgba(255,246,225,.95);}
.opt.sel .key{background:linear-gradient(135deg,#FFEAB4,#EFC158);color:#4A3006;}
.opt.right{border-color:rgba(47,143,122,.75);background:rgba(226,246,240,.95);}
.opt.right .key{background:var(--jade);color:#fff;}
.opt.wrong{border-color:rgba(217,74,58,.7);background:rgba(255,236,233,.95);}
.opt.wrong .key{background:#D94A3A;color:#fff;}
.opt.locked{pointer-events:none;opacity:.94;}
.opt.locked:not(.sel):not(.right):not(.wrong){opacity:.45;}

.q-feedback{margin-top:16px;padding:13px 15px;border-radius:13px;background:rgba(255,255,255,.9);
  border:1px solid var(--line-soft);border-left:3px solid var(--jade);animation:screenIn .32s ease;}
.q-feedback.bad{border-left-color:#D94A3A;}
.fb-row{font-size:14px;font-weight:700;color:var(--jade);margin-bottom:4px;}
.q-feedback.bad .fb-row{color:#C4392A;}
.q-feedback p{font-size:12.5px;color:var(--ink-3);line-height:1.65;}

/* ============================ 成绩 ============================ */
#scr-result{justify-content:center;}
.result-card{background:var(--card);backdrop-filter:blur(10px);border:1px solid var(--line);
  border-radius:24px;padding:30px 20px 26px;text-align:center;margin-top:10px;}
.score-ring{position:relative;width:158px;height:158px;margin:0 auto 18px;}
.score-ring svg{width:100%;height:100%;transform:rotate(-90deg);}
.ring-bg{fill:none;stroke:rgba(200,144,30,.16);stroke-width:11;}
.ring-fg{fill:none;stroke:url(#ringGrad);stroke-width:11;stroke-linecap:round;
  stroke-dasharray:415;stroke-dashoffset:415;transition:stroke-dashoffset 1.15s cubic-bezier(.22,1,.36,1);
  stroke:#C8901E;filter:drop-shadow(0 0 10px rgba(200,144,30,.5));}
.score-num{position:absolute;inset:0;display:flex;align-items:baseline;justify-content:center;gap:3px;}
.score-num b{font-size:52px;font-weight:800;line-height:158px;letter-spacing:-1px;
  background:linear-gradient(120deg,#E9A93C,#B5790F);-webkit-background-clip:text;background-clip:text;color:transparent;}
.score-num span{font-size:14px;color:var(--ink-3);}
.res-score-sub{text-align:center;font-size:12.5px;color:var(--ink-3);margin:-6px 0 10px;}
.res-score-sub b{color:var(--ink-2);font-weight:700;}
.result-card h2{font-size:22px;margin-bottom:8px;}
.result-card>p{color:var(--ink-3);font-size:14px;}
.res-detail{margin-top:18px;text-align:left;display:flex;flex-direction:column;gap:9px;
  max-height:180px;overflow-y:auto;}
.rd-item{display:flex;gap:9px;font-size:12.5px;line-height:1.55;color:var(--ink-3);
  padding:9px 11px;border-radius:11px;background:rgba(255,250,240,.9);border:1px solid var(--line-soft);}
.rd-item .rd-mk{flex:0 0 18px;height:18px;border-radius:6px;display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:800;}
.rd-item.ok .rd-mk{background:rgba(47,143,122,.18);color:#1F6B5B;}
.rd-item.no .rd-mk{background:rgba(217,74,58,.16);color:#C4392A;}
.rd-item .rd-b{color:var(--ink);font-weight:600;}

/* ============================ 碎片收集 ============================ */
#scr-collect{text-align:center;}
.collect-head h2{font-size:22px;margin-bottom:5px;letter-spacing:.5px;}
.collect-head p{font-size:13px;color:var(--ink-3);}
.collect-head p b{color:var(--gold-deep);}

.cake-stage{position:relative;width:min(264px,74vw);height:min(264px,74vw);margin:14px auto 6px;display:flex;align-items:center;justify-content:center;}
.cake-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;}
.cake-center{position:relative;z-index:3;width:47%;height:47%;border-radius:50%;
  background:radial-gradient(circle, rgba(255,255,255,.96) 0%, rgba(255,247,232,.72) 62%, rgba(255,247,232,0) 78%);
  display:flex;align-items:center;justify-content:center;flex-direction:column;transition:all .5s;}
.cake-center::before{content:"";position:absolute;inset:11%;border-radius:50%;
  border:1.5px solid rgba(146,94,14,.24);pointer-events:none;}
.cake-center::after{content:"";position:absolute;inset:21%;border-radius:50%;
  border:1px dashed rgba(146,94,14,.18);pointer-events:none;}
.cake-center.done{background:radial-gradient(circle, rgba(255,255,255,.98) 0%, rgba(255,240,205,.8) 62%, rgba(255,240,205,0) 78%);
  box-shadow:0 0 34px rgba(200,144,30,.3);}
.center-inner{display:flex;align-items:baseline;gap:3px;}
.cc-num{font-size:34px;font-weight:800;line-height:1;color:#B5790F;text-shadow:0 2px 8px rgba(200,144,30,.25);}
.cc-txt{font-size:12px;color:rgba(87,72,47,.72);}
.cc-txt b{color:rgba(87,72,47,.9);}
.cake-glow{position:absolute;inset:-12%;border-radius:50%;z-index:1;opacity:0;pointer-events:none;
  background:radial-gradient(circle, rgba(240,190,90,.42) 0%, rgba(232,86,42,.14) 45%, transparent 70%);
  transition:opacity .6s;}
.cake-glow.on{opacity:1;animation:glowPulse 2.6s ease-in-out infinite;}
@keyframes glowPulse{0%,100%{transform:scale(.94);opacity:.75}50%{transform:scale(1.06);opacity:1}}
.wedge{transition:all .5s cubic-bezier(.22,1,.36,1);transform-origin:120px 120px;}
.wedge.on{filter:drop-shadow(0 0 12px rgba(200,144,30,.6));}

.frag-slots{display:flex;gap:10px;justify-content:center;margin:6px 0 16px;}
.fslot{flex:1;max-width:112px;border-radius:14px;padding:11px 8px 9px;
  background:rgba(255,255,255,.78);border:1px dashed rgba(200,144,30,.3);
  display:flex;flex-direction:column;align-items:center;gap:6px;transition:all .4s;}
.fslot.on{border:1px solid rgba(200,144,30,.6);
  background:linear-gradient(180deg,rgba(255,246,225,.98),rgba(255,253,248,.95));
  box-shadow:0 10px 24px -14px rgba(200,144,30,.7);}
.fslot svg{width:34px;height:34px;opacity:.24;transition:opacity .4s;}
.fslot.on svg{opacity:1;filter:drop-shadow(0 0 8px rgba(200,144,30,.55));}
.fslot span{font-size:11px;color:var(--ink-4);}
.fslot.on span{color:var(--gold-deep);font-weight:700;}

.collect-info{display:flex;background:var(--card);border:1px solid var(--line);
  border-radius:15px;padding:13px 6px;backdrop-filter:blur(8px);}
.ci-item{flex:1;display:flex;flex-direction:column;gap:3px;position:relative;}
.ci-item+.ci-item::before{content:"";position:absolute;left:0;top:14%;height:72%;width:1px;background:var(--line-soft);}
.ci-item span{font-size:11.5px;color:var(--ink-4);}
.ci-item b{font-size:19px;color:var(--gold-deep);font-weight:800;}

/* ============================ 抽奖 ============================ */
#scr-draw{text-align:center;justify-content:center;}
.draw-head h2{font-size:22px;margin-bottom:6px;letter-spacing:.5px;
  background:linear-gradient(100deg,#E9A93C,#B5790F);-webkit-background-clip:text;background-clip:text;color:transparent;}
.draw-head p{font-size:13px;color:var(--ink-3);}
.wheel-wrap{position:relative;width:min(310px,84vw);height:min(310px,84vw);margin:20px auto 8px;}
.wheel{width:100%;height:100%;filter:drop-shadow(0 16px 34px rgba(150,105,40,.3));
  transition:transform 5.2s cubic-bezier(.12,.72,.12,1);}
.wheel-pointer{position:absolute;top:-10px;left:50%;transform:translateX(-50%);z-index:5;
  width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-top:26px solid #E8562A;
  filter:drop-shadow(0 3px 8px rgba(150,105,40,.4));}
.wheel-pointer::after{content:"";position:absolute;top:-30px;left:-9px;width:18px;height:18px;border-radius:50%;
  background:linear-gradient(135deg,#FFEAB4,#EFC158);box-shadow:0 0 14px rgba(200,144,30,.7);}
.wheel-go{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:4;
  width:27%;height:27%;border-radius:50%;
  background:radial-gradient(circle at 36% 30%, #FFEFC0, #EFC158 55%, #C8901E);
  color:#4A3006;font-size:16px;font-weight:800;letter-spacing:2px;
  box-shadow:0 0 0 5px rgba(255,255,255,.75), 0 10px 26px rgba(150,105,40,.35);
  display:flex;align-items:center;justify-content:center;transition:transform .18s;}
.wheel-go:active{transform:translate(-50%,-50%) scale(.93);}
.wheel-go:disabled{opacity:.6;}
.draw-meta{font-size:13px;color:var(--ink-3);margin-top:6px;}

/* ============================ 浮层 ============================ */
.sheet{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;}
.sheet[hidden]{display:none;}
.sheet-mask{position:absolute;inset:0;background:rgba(74,52,20,.34);backdrop-filter:blur(4px);animation:fadeIn .28s;}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.sheet-body{position:relative;width:100%;max-width:460px;max-height:82vh;overflow-y:auto;
  background:linear-gradient(180deg,#FFFFFF,#FFF9EF);
  border-radius:24px 24px 0 0;border-top:1px solid var(--line);
  box-shadow:0 -18px 40px -22px rgba(150,105,40,.45);
  padding:10px 22px calc(24px + var(--safe-bottom));
  animation:sheetUp .38s cubic-bezier(.22,1,.36,1);}
@keyframes sheetUp{from{transform:translateY(100%)}to{transform:none}}
.sheet-grip{width:38px;height:4px;border-radius:100px;background:rgba(200,144,30,.3);margin:0 auto 16px;}
.sheet-body h3{font-size:18px;margin-bottom:14px;text-align:center;letter-spacing:.5px;}
.rules-list{display:flex;flex-direction:column;gap:11px;counter-reset:r;margin-bottom:16px;}
.rules-list li{position:relative;padding-left:28px;font-size:13.5px;line-height:1.68;color:var(--ink-3);}
.rules-list li::before{counter-increment:r;content:counter(r);
  position:absolute;left:0;top:1px;width:19px;height:19px;border-radius:50%;
  background:rgba(200,144,30,.16);color:var(--gold-deep);font-size:11px;font-weight:800;
  display:flex;align-items:center;justify-content:center;}
.rules-notice{font-size:11.5px;color:var(--ink-4);line-height:1.65;margin-bottom:16px;text-align:center;}
.prize-list{display:flex;flex-direction:column;gap:10px;margin-bottom:16px;}
.prize-row{display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:rgba(255,252,246,.95);border:1px solid var(--line);border-radius:13px;padding:12px 14px;}
.prize-row .pr-l{min-width:0;}
.prize-row .pr-n{font-size:14.5px;font-weight:700;color:var(--gold-deep);}
.prize-row .pr-d{font-size:11.5px;color:var(--ink-3);margin-top:2px;word-break:break-all;}
.prize-row .pr-t{font-size:11px;color:var(--ink-4);margin-top:3px;}
.prize-row .pr-c{flex:0 0 auto;font-size:11px;color:#1F6B5B;font-weight:700;
  border:1px solid rgba(47,143,122,.45);padding:3px 8px;border-radius:8px;background:rgba(47,143,122,.08);}
.prize-empty{text-align:center;color:var(--ink-4);font-size:13px;padding:26px 0;}

/* ============================ 领奖信息 ============================ */
.claim-box{width:100%;max-width:310px;text-align:left;
  background:rgba(255,252,246,.97);border:1px solid var(--line);border-radius:18px;
  padding:15px 16px 10px;box-shadow:var(--shadow-sm);animation:screenIn .45s .25s both cubic-bezier(.22,1,.36,1);}
.claim-title{font-size:13.5px;font-weight:800;color:var(--gold-deep);text-align:center;
  margin-bottom:11px;letter-spacing:.5px;}
.claim-box .field{margin-bottom:12px;}
.claim-box .field>span{font-size:12.5px;margin-bottom:5px;}
.claim-box .field input,.claim-box .field textarea{
  width:100%;height:44px;border-radius:11px;padding:10px 13px;font-size:15px;
  background:#fff;border:1px solid rgba(200,144,30,.28);color:var(--ink);outline:none;
  font-family:inherit;transition:border-color .2s, box-shadow .2s;appearance:none;}
.claim-box .field textarea{height:auto;min-height:62px;resize:none;line-height:1.55;}
.claim-box .field input::placeholder,.claim-box .field textarea::placeholder{color:var(--ink-4);font-size:13px;}
.claim-box .field input:focus,.claim-box .field textarea:focus{border-color:rgba(200,144,30,.7);
  box-shadow:0 0 0 3px rgba(200,144,30,.13);}
.claim-box .field.err input,.claim-box .field.err textarea{border-color:#D94A3A;animation:shake .4s;}
.claim-btn{margin-top:2px;}
.claim-later{background:none;color:var(--ink-4);font-size:12px;font-weight:500;height:auto;
  padding:8px 0 4px;margin-top:0;width:100%;text-align:center;
  text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(176,160,138,.4);}
.claim-note{font-size:11px;color:var(--ink-4);line-height:1.6;margin:0 0 4px;}
.claim-ok{display:flex;align-items:center;justify-content:center;gap:8px;
  font-size:13.5px;font-weight:700;color:var(--jade);
  background:rgba(47,143,122,.1);border:1px solid rgba(47,143,122,.35);
  border-radius:12px;padding:14px 10px;animation:screenIn .35s ease;}
.claim-tag{display:inline-block;font-size:10.5px;font-weight:700;padding:1.5px 8px;
  border-radius:100px;letter-spacing:1px;vertical-align:1px;}
.claim-tag.physical{background:rgba(232,86,42,.12);color:#C2431B;}
.claim-tag.coupon{background:rgba(47,143,122,.12);color:#1F6B5B;}
.claimed-mark{font-size:11px;color:var(--jade);font-weight:700;}
.pr-row-act{margin-top:8px;}
.btn-mini{display:inline-flex;align-items:center;justify-content:center;height:34px;
  padding:0 14px;border-radius:10px;font-size:12.5px;font-weight:700;}
.btn-mini.gold{background:linear-gradient(135deg,#FFEAB4,#EFC158);color:#4A3006;
  box-shadow:0 8px 18px -10px rgba(200,144,30,.8);}
.sheet .claim-sub{text-align:center;font-size:12.5px;color:var(--ink-3);margin:-6px 0 14px;}

/* ============================ 动效层 ============================ */
.fx-layer{position:fixed;inset:0;z-index:80;pointer-events:none;
  display:flex;align-items:center;justify-content:center;max-width:460px;margin:0 auto;}
.fx-mask{position:absolute;inset:0;background:rgba(255,248,236,.9);backdrop-filter:blur(6px);
  opacity:0;transition:opacity .3s;pointer-events:auto;}
.fx-mask.on{opacity:1;}
.fx-core{position:relative;z-index:2;pointer-events:auto;display:flex;flex-direction:column;align-items:center;gap:18px;
  padding:0 28px;text-align:center;}

/* 光爆 */
.burst{position:absolute;width:10px;height:10px;border-radius:50%;top:50%;left:50%;
  background:radial-gradient(circle,#FFF6DA,rgba(240,190,90,.5) 40%,transparent 70%);
  transform:translate(-50%,-50%);}
.burst.go{animation:burstOut .85s cubic-bezier(.15,.9,.3,1) forwards;}
@keyframes burstOut{0%{width:10px;height:10px;opacity:1}100%{width:420px;height:420px;opacity:0}}
.rays{position:absolute;top:50%;left:50%;width:340px;height:340px;transform:translate(-50%,-50%);opacity:0;}
.rays.go{animation:raysSpin 1.1s ease-out forwards;}
@keyframes raysSpin{0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(0)}
  40%{opacity:.9}100%{opacity:0;transform:translate(-50%,-50%) scale(1.25) rotate(60deg)}}
.rays i{position:absolute;top:50%;left:50%;width:2px;height:150px;margin:-150px 0 0 -1px;transform-origin:bottom center;
  background:linear-gradient(180deg,rgba(255,240,204,.95),transparent);}

.particle{position:absolute;top:50%;left:50%;width:7px;height:7px;border-radius:50%;
  background:linear-gradient(135deg,#FFF3D0,#EFC158);opacity:0;}
.particle.go{animation:particleFly 1.05s ease-out forwards;}
@keyframes particleFly{
  0%{opacity:1;transform:translate(-50%,-50%) scale(.4)}
  70%{opacity:1}
  100%{opacity:0;transform:translate(calc(-50% + var(--px)),calc(-50% + var(--py))) scale(.25)}
}

.fx-frag{width:118px;height:118px;transform:scale(0) rotate(-160deg);}
.fx-frag.go{animation:fragIn .82s cubic-bezier(.2,1.3,.4,1) forwards;}
@keyframes fragIn{
  0%{transform:scale(0) rotate(-160deg);filter:brightness(2.4)}
  62%{transform:scale(1.14) rotate(8deg)}
  100%{transform:scale(1) rotate(0);filter:brightness(1)}
}
.fx-title{font-size:19px;font-weight:800;opacity:0;transform:translateY(12px);
  background:linear-gradient(100deg,#D98A1F,#B5790F,#C7481A);-webkit-background-clip:text;background-clip:text;color:transparent;}
.fx-sub{font-size:13.5px;color:var(--ink-2);opacity:0;transform:translateY(10px);}
.fx-title.go,.fx-sub.go{animation:txIn .5s cubic-bezier(.22,1,.36,1) forwards;}
@keyframes txIn{to{opacity:1;transform:none}}
.fx-hint{font-size:11.5px;color:var(--ink-4);opacity:0;animation:txIn .5s .9s forwards;}
.fx-btn{margin-top:4px;opacity:0;animation:txIn .5s 1.05s forwards;width:210px;}
.fx-btn:disabled{opacity:1 !important;cursor:default;}
.fx-btn-sub{margin-top:-6px;width:210px;animation-delay:1.2s;}

/* 合成 */
.compose-stage{position:relative;width:240px;height:240px;display:flex;align-items:center;justify-content:center;}
.compose-piece{position:absolute;width:150px;height:150px;transition:none;}
.compose-piece.fly1{animation:flyTo1 .95s cubic-bezier(.4,0,.2,1) forwards;}
.compose-piece.fly2{animation:flyTo2 .95s cubic-bezier(.4,0,.2,1) forwards;}
.compose-piece.fly3{animation:flyTo3 .95s cubic-bezier(.4,0,.2,1) forwards;}
@keyframes flyTo1{from{transform:translate(-118px,-92px) rotate(-42deg) scale(.85);opacity:.95}
  to{transform:translate(0,0) rotate(0) scale(1);opacity:1}}
@keyframes flyTo2{from{transform:translate(120px,-84px) rotate(40deg) scale(.85);opacity:.95}
  to{transform:translate(0,0) rotate(0) scale(1);opacity:1}}
@keyframes flyTo3{from{transform:translate(0,132px) rotate(24deg) scale(.85);opacity:.95}
  to{transform:translate(0,0) rotate(0) scale(1);opacity:1}}
.compose-full{position:absolute;width:196px;height:196px;transform:scale(0) rotate(-40deg);opacity:0;}
.compose-full.go{animation:cakeBorn 1s cubic-bezier(.2,1.25,.35,1) forwards;}
@keyframes cakeBorn{
  0%{transform:scale(0) rotate(-40deg);opacity:0;filter:brightness(2.6)}
  55%{transform:scale(1.16) rotate(6deg);opacity:1}
  100%{transform:scale(1) rotate(0);opacity:1;filter:brightness(1)}
}
.compose-stage.shake{animation:stageShake .5s ease-in-out;}
@keyframes stageShake{0%,100%{transform:translateX(0)}20%{transform:translateX(-5px)}40%{transform:translateX(5px)}60%{transform:translateX(-3px)}80%{transform:translateX(3px)}}

/* 中奖结果卡 */
.prize-card{width:100%;max-width:300px;background:linear-gradient(180deg,#FFFFFF,#FFF7EA);
  border:1px solid var(--line);border-radius:22px;padding:26px 22px 22px;
  box-shadow:0 24px 60px -20px rgba(120,80,25,.5);transform:scale(.6);opacity:0;
  animation:cardPop .55s cubic-bezier(.2,1.3,.36,1) .1s forwards;}
@keyframes cardPop{to{transform:scale(1);opacity:1}}
.prize-card .pc-emoji{font-size:44px;line-height:1;margin-bottom:10px;}
.prize-card .pc-img{width:108px;height:108px;margin:0 auto 12px;border-radius:22px;overflow:hidden;
  border:1px solid var(--line);background:#FFFDF6;box-shadow:0 14px 30px -16px rgba(150,105,40,.55);
  animation:imgPop .55s cubic-bezier(.2,1.3,.36,1) .16s both;}
.prize-card .pc-img img{width:100%;height:100%;object-fit:cover;display:block;}
.prize-card .pc-img.lose{filter:saturate(.72);opacity:.94;}
@keyframes imgPop{from{transform:scale(.5) rotate(-6deg);opacity:0}to{transform:none;opacity:1}}
.prize-card .pc-kicker{font-size:12px;color:var(--ink-4);letter-spacing:2px;}
.prize-card .pc-name{font-size:25px;font-weight:800;margin:6px 0 8px;
  background:linear-gradient(100deg,#E9A93C,#C8901E,#D9541F);-webkit-background-clip:text;background-clip:text;color:transparent;}
.prize-card .pc-desc{font-size:13.5px;color:var(--ink-3);line-height:1.65;}
.prize-card .pc-code{margin-top:14px;font-size:12px;color:#1F6B5B;letter-spacing:1px;
  border-top:1px dashed rgba(200,144,30,.3);padding-top:12px;word-break:break-all;}
.prize-card .pc-code b{font-size:16px;letter-spacing:2px;}
.prize-card.lose .pc-name{background:linear-gradient(100deg,#B9AE9C,#8B7A61);-webkit-background-clip:text;background-clip:text;}

/* 彩带 */
.confetti{position:absolute;width:9px;height:15px;border-radius:2px;top:44%;left:50%;opacity:0;}
.confetti.go{animation:confFly 1.5s ease-out forwards;}
@keyframes confFly{
  0%{opacity:1;transform:translate(-50%,0) rotate(0)}
  100%{opacity:0;transform:translate(calc(-50% + var(--cx)),var(--cy)) rotate(var(--cr))}
}

/* ============================ 内嵌模式（?embed=1） ============================ */
body.embed-mode .page-footer{display:none;}
body.embed-mode #app{min-height:100%;}
body.embed-mode .sky{position:absolute;height:100%;}

/* ============================ Toast ============================ */
.toast{position:fixed;left:50%;bottom:calc(76px + var(--safe-bottom));transform:translateX(-50%);
  z-index:99;background:rgba(255,252,246,.98);border:1px solid var(--line);color:var(--ink);
  font-size:13.5px;padding:11px 20px;border-radius:100px;max-width:80vw;text-align:center;
  box-shadow:0 14px 32px -14px rgba(150,105,40,.5);animation:toastIn .28s cubic-bezier(.22,1,.36,1);}
.toast[hidden]{display:none;}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%,0)}}

/* ============================ 适配 ============================ */
@media (max-height:700px){
  .hero-visual{height:172px;}
  .hero-title{font-size:27px;}
  .lantern-body{min-height:250px;}
  .cake-stage{width:min(220px,64vw);height:min(220px,64vw);}
}
@media (max-height:620px){
  .hero-visual{height:140px;}
  .home-meta{display:none;}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.06s!important;}
}
