:root{
  --paper:#F6F3EA;
  --paper-2:#FBF9F3;
  --ink:#2E3A33;
  --ink-2:#4E5850;
  --ink-3:#5E6455;
  --line:#E3DCCC;
  --line-2:#EFEADD;
  --jade:#8CA48C;
  --jade-dark:#3F5147;
  --jade-text:#3F5147;
  --red:#A6402C;
  --serif:"Microsoft YaHei","微软雅黑","PingFang SC","Segoe UI",Arial,sans-serif;
  --num:"Microsoft YaHei","微软雅黑","PingFang SC","Segoe UI",Arial,sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
[hidden]{display:none !important;}
html,body{margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;}
body{
  min-height:100dvh;
  background:
    radial-gradient(circle at 20% 0%, #F1EDE1 0%, transparent 55%),
    radial-gradient(circle at 90% 100%, #EEEAE0 0%, transparent 45%),
    #E8E4D8;
  font-family:var(--serif);
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
  display:flex;
  justify-content:center;
}
i,em{font-style:normal;}
button{font-family:inherit;color:inherit;}
img,svg{vertical-align:middle;}

.phone{
  width:100%;max-width:480px;background:var(--paper);position:relative;
  min-height:100dvh;
  box-shadow:0 0 0 1px rgba(90,80,55,.10), 0 26px 70px rgba(70,60,35,.14);
}
@media (min-width:560px){
  body{padding:24px 0;align-items:flex-start;}
  .phone{min-height:calc(100dvh - 48px);border-radius:18px;}
}

/* ---------- 顶栏 ---------- */
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:calc(14px + env(safe-area-inset-top)) 18px 12px;
}
.brand{display:flex;align-items:center;gap:10px;}
.seal{
  width:32px;height:32px;border-radius:6px;
  background:linear-gradient(160deg,#E8EDE1,#DCE4D4);
  border:1px solid #CBD7C3;
  color:#465744;display:grid;place-items:center;
  font-size:17px;line-height:1;letter-spacing:0;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.6);
}
.seal-img{
  width:34px;height:34px;border-radius:8px;
  border:1px solid #CBD7C3;
  object-fit:cover;display:block;
  box-shadow:0 1px 4px rgba(90,80,55,.14);
}
.brand-name{font-size:17px;letter-spacing:.06em;color:var(--ink);line-height:1.1;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.brand-sub{margin-top:3px;font-size:10px;letter-spacing:.12em;color:var(--ink-3);}
.chip{
  display:flex;align-items:center;gap:4px;
  height:27px;padding:0 10px;border-radius:5px;
  border:1px solid var(--line);background:rgba(255,255,255,.5);
  font-size:11px;letter-spacing:.06em;color:var(--ink-2);
  cursor:pointer;transition:.18s;
}
.chip:hover{border-color:#C6CFC0;color:var(--jade-text);}
.chip.logged{color:var(--jade-text);border-color:#CBD7C3;background:rgba(255,255,255,.7);}

/* ---------- 弹幕 ---------- */
.dm-wrap{
  position:relative;padding:9px 0 7px;
  background:linear-gradient(180deg,#F4F1E5,#F7F4EB);
  border-top:1px solid var(--line-2);
  border-bottom:1px solid var(--line-2);
  overflow:hidden;
}
.dm-head{
  display:flex;align-items:center;gap:7px;
  padding:0 18px 6px;font-size:10px;letter-spacing:.1em;color:var(--ink-3);
}
.dm-input{
  display:flex;gap:6px;align-items:center;
  padding:8px 14px 12px;
}
.dm-input input{
  flex:1;min-width:0;height:34px;
  padding:0 12px;font-family:var(--serif);font-size:13px;color:#3A443A;
  background:#FFFFFF;border:1px solid var(--line);border-radius:17px;
  outline:none;transition:border-color .15s,box-shadow .15s;
}
.dm-input input::placeholder{color:#A8B2A6;}
.dm-input input:focus{border-color:#8FA383;box-shadow:0 0 0 3px rgba(143,163,131,.18);}
.dm-input button{
  flex:0 0 auto;height:34px;padding:0 15px;
  font-family:var(--serif);font-size:13px;font-weight:600;letter-spacing:.05em;
  color:#FDFCF7;background:linear-gradient(135deg,#6E7F5E,#59684B);
  border:none;border-radius:17px;cursor:pointer;
  transition:filter .15s,transform .1s;
}
.dm-input button:hover{filter:brightness(1.07);}
.dm-input button:active{transform:scale(.96);}
.dm-input button:disabled{opacity:.55;cursor:default;}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.75)}}

.lane{
  position:relative;height:24px;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
}
.dm{
  position:absolute;top:2px;left:0;
  display:inline-block;white-space:nowrap;
  padding:3px 9px;border-radius:99px;
  background:rgba(255,255,255,.78);
  border:1px solid #E9E3D5;
  font-size:11px;line-height:1.15;color:#55604F;letter-spacing:.02em;
  animation-name:dmRun;animation-timing-function:linear;animation-fill-mode:forwards;
  will-change:transform;
}
.lane::before,.lane::after{
  content:"";position:absolute;top:0;bottom:0;width:26px;z-index:5;pointer-events:none;
}
.lane::before{left:0;background:linear-gradient(90deg,#F5F2E7 8%,rgba(245,242,231,0));}
.lane::after{right:0;background:linear-gradient(270deg,#F5F2E7 8%,rgba(245,242,231,0));}
.dm b{font-weight:400;color:#39473C;}
.dm b::after{content:"：";margin-right:2px;color:#6E6A57;}
@keyframes dmRun{
  from{transform:translateX(420px);}
  to{transform:translateX(calc(-100% - 10px));}
}

/* ---------- Banner ---------- */
.banner{
  position:relative;overflow:hidden;
  padding:20px 18px 0;min-height:352px;
  background:linear-gradient(170deg,#F7F4EA 0%,#F4F1E3 62%,#F0F1E4 100%);
}
.banner .mountains{
  position:absolute;left:0;bottom:0;width:100%;height:130px;pointer-events:none;
}
.banner-art{
  display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;
  background:#1B2422;color:#F3EFE2;
}
.banner.has-art{padding:0;min-height:0;background:#1B2422;}
.banner.has-art .mountains,
.banner.has-art .banner-inner{display:none;}
.banner-inner{position:relative;z-index:2;}
.year{
  margin-top:16px;font-size:18px;letter-spacing:.08em;color:#48523F;
}
.year span{font-family:var(--num);letter-spacing:.06em;margin-right:10px;}
.hero{
  margin:10px 0 0;font-size:38px;line-height:1.16;letter-spacing:.06em;
  font-weight:700;color:#333F33;
}
.hero em{
  color:var(--red);font-size:44px;letter-spacing:0;
  margin-left:2px;
  text-shadow:0 1px 0 rgba(255,255,255,.5);
}
.sub{
  margin:14px 0 0;font-size:13px;line-height:1.8;letter-spacing:.05em;
  color:#57604F;
}
.tagrow{display:flex;align-items:center;gap:8px;margin:16px 0 0;}
.tag{
  font-size:10px;letter-spacing:.1em;color:var(--red);
  border:1px solid rgba(166,64,44,.4);border-radius:3px;
  padding:2px 6px;background:rgba(255,255,255,.35);
}
.tagtxt{font-size:10px;letter-spacing:.08em;color:var(--ink-3);}
@media (max-width:359px){
  .hero{font-size:34px;}
  .hero em{font-size:40px;}
}

/* ---------- 倒计时（一行式窄条） ---------- */
.cd{
  margin:20px 18px 0;padding:10px 14px;
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  border:1px solid var(--line);border-radius:11px;
  background:var(--paper-2);
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset;
}
.cd-label{display:flex;align-items:center;gap:6px;font-size:12.5px;letter-spacing:.06em;color:var(--ink-2);flex:0 0 auto;}
.cd-label i{width:5px;height:5px;border-radius:50%;background:var(--jade);}
.cd-clock{display:flex;align-items:baseline;gap:3px;font-family:var(--num);}
.cd-clock b{font-size:19px;font-weight:400;color:#344033;line-height:1;}
.cd-clock i{font-size:10px;letter-spacing:.06em;color:var(--ink-3);font-family:var(--serif);margin:0 3px 0 1px;}
.cd-note{flex:0 0 auto;font-family:var(--num);font-size:10.5px;letter-spacing:.04em;color:var(--ink-3);}
.sep{color:#9A9480;font-size:13px;font-weight:400;margin:0 2px;}

/* ---------- 搜索（贴近列表） ---------- */
.search{
  display:flex;align-items:center;gap:8px;
  margin:16px 18px 0;height:40px;padding:0 14px;
  background:var(--paper-2);border:1px solid var(--line);border-radius:999px;
  transition:.2s;
}
.search:focus-within{border-color:#B9C4B4;box-shadow:0 0 0 3px rgba(140,164,140,.12);}
.search svg{flex:0 0 auto;opacity:.55;}
.search input{
  flex:1;min-width:0;border:0;background:transparent;outline:none;
  font-family:var(--serif);font-size:14px;color:var(--ink);letter-spacing:.04em;
}
.search input::placeholder{color:#66644F;letter-spacing:.04em;}
.search .clear{
  border:0;background:transparent;color:#66644F;font-size:15px;line-height:1;
  cursor:pointer;padding:2px 0;display:none;
}
.search .clear.show{display:block;}

/* ---------- 统计 ---------- */
.stats{
  margin:16px 18px 12px;padding:15px 14px 16px;
  border:0;border-radius:12px;
  background:linear-gradient(180deg,#FAF7EE,#F4F0E3);
}
.stats-head{display:flex;align-items:flex-end;justify-content:space-between;}
.stats-head h3{margin:5px 0 0;font-size:20px;font-weight:700;letter-spacing:.06em;color:#354033;}
.stats-row{display:flex;margin-top:14px;}
.stat{flex:1;text-align:center;position:relative;}
.stat + .stat::before{
  content:"";position:absolute;left:0;top:8px;bottom:6px;width:1px;background:#E4DECD;
}
.stat b{display:inline-block;font-family:var(--num);font-size:30px;font-weight:400;color:#2E3A33;letter-spacing:-.01em;line-height:1.1;}
.stat span{display:block;margin-top:5px;font-size:11px;letter-spacing:.06em;color:var(--ink-3);}
.bump{animation:bump .5s ease;}
@keyframes bump{
  0%{transform:scale(1);}
  38%{transform:scale(1.1);color:var(--red);}
  100%{transform:scale(1);}
}

/* ---------- 三甲 ---------- */
.podium{
  margin:0 18px;padding:13px 14px 14px;
  border:1px solid var(--line);border-radius:12px;
  background:var(--paper-2);
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset;
}
.podium-head{display:flex;align-items:center;gap:8px;}
.pod-k{
  font-size:10px;letter-spacing:.12em;color:var(--red);
  border:1px solid rgba(166,64,44,.4);border-radius:3px;
  padding:2px 6px;background:rgba(255,255,255,.35);
}
.podium-head h3{margin:0;font-size:15px;font-weight:700;letter-spacing:.08em;color:#354033;}
.podium-row{
  display:flex;align-items:flex-end;gap:9px;margin-top:13px;
  border-bottom:1px solid var(--line);
}
/* 阶梯领奖台:魁位抬高,亚/季踏阶,立于同一条地线上 */
.pod{
  position:relative;
  flex:1;min-width:0;text-align:center;
  display:flex;flex-direction:column;justify-content:flex-end;align-items:center;
  padding:11px 4px 11px;
  border:1px solid var(--line);border-bottom:none;
  border-radius:9px 9px 0 0;
  background:linear-gradient(180deg,#FAF7EE,#F4F0E3);
}
/* 1/2/3 数字章:骑在踏阶上沿中央,与投票卡排名角标呼应 */
.pod-num{
  position:absolute;top:-12px;left:50%;transform:translateX(-50%);z-index:2;
  width:24px;height:24px;border-radius:999px;
  display:grid;place-items:center;
  font-family:var(--num);font-size:12px;font-style:normal;
  color:#F6F3EA;background:#3F5147;
  border:2px solid var(--paper-2);
}
.pod.p1 .pod-num{background:var(--red);}
.pod.p2{order:1;min-height:106px;}
.pod.p1{
  order:2;flex:1.15;min-height:132px;
  background:linear-gradient(180deg,#F7F2E2,#F0E9D2);
  border-color:#DFD5B8;
}
.pod.p3{order:3;min-height:94px;}
.pod.empty{visibility:hidden;}
.podium-row.flat .pod{min-height:98px;}
.podium-row.flat .pod.p1{min-height:112px;}
.pod-rank{
  display:inline-grid;place-items:center;
  width:20px;height:20px;border-radius:5px;
  font-size:11px;letter-spacing:0;color:#F6F3EA;background:#3F5147;
}
.pod.p1 .pod-rank{width:24px;height:24px;font-size:12px;background:var(--red);}
.pod.p3 .pod-rank{width:18px;height:18px;font-size:10px;}
.pod-name{
  display:block;margin-top:6px;font-size:12.5px;color:#39473C;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;
}
.pod.p1 .pod-name{margin-top:8px;font-size:13.5px;}
.pod-votes{display:block;margin-top:2px;font-family:var(--num);font-size:20px;font-weight:400;color:#2E3A33;line-height:1.1;}
.pod.p1 .pod-votes{margin-top:3px;font-size:32px;color:var(--red);}
.pod.p3 .pod-votes{font-size:16px;}
.pod-delta{display:block;margin-top:2px;font-size:10px;letter-spacing:.06em;color:var(--ink-3);}

/* ---------- 战报（轻量文字条） ---------- */
.flash{
  margin:12px 18px 0;height:24px;
  display:flex;align-items:center;gap:7px;
  padding:0 2px;overflow:hidden;
}
.flash-dot{
  flex:0 0 auto;width:5px;height:5px;border-radius:50%;
  background:var(--red);animation:pulse 1.5s infinite;
}
.flash-track{
  font-size:12px;letter-spacing:.04em;color:var(--ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  transition:opacity .35s ease;
}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.75)}}

/* ---------- 我的投票 ---------- */
.myvote{
  margin:12px 18px 0;
  display:flex;align-items:center;gap:11px;
  padding:11px 12px;
  border:1px solid #DFD5B8;border-radius:12px;
  background:linear-gradient(150deg,#F7F3E6,#F2EDDC);
}
.mv-seal{
  flex:0 0 auto;width:34px;height:34px;border-radius:7px;
  display:grid;place-items:center;
  font-size:16px;color:#F6F3EA;
  background:linear-gradient(160deg,#B4543C,#96432F);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.25);
}
.mv-body{flex:1;min-width:0;}
.mv-body b{display:block;font-size:13.5px;font-weight:400;color:#333F33;letter-spacing:.04em;}
.mv-body span{display:block;margin-top:3px;font-size:11.5px;color:var(--ink-3);letter-spacing:.03em;}
.mv-btn{
  flex:0 0 auto;height:31px;padding:0 14px;
  border:1px solid var(--jade-dark);border-radius:7px;
  background:transparent;color:var(--jade-dark);
  font-family:var(--serif);font-size:12px;letter-spacing:.06em;
  cursor:pointer;transition:.18s;
}
.mv-btn:hover{background:var(--jade-dark);color:#F6F3EA;}

/* ---------- 列表头 ---------- */
.list-head{
  display:flex;align-items:center;justify-content:space-between;
  margin:18px 18px 10px;
}
.list-head .t{font-size:13px;letter-spacing:.06em;color:#4B564B;}
.list-head .t b{font-family:var(--num);font-weight:400;color:var(--red);margin:0 2px;}
.list-head .s{font-size:10.5px;letter-spacing:.06em;color:var(--ink-3);}

/* ---------- 字母条 ---------- */
.alpha{
  position:sticky;top:0;z-index:20;
  display:flex;gap:6px;overflow-x:auto;
  padding:9px 18px;
  background:rgba(246,243,234,.95);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  border-top:1px solid var(--line-2);
  border-bottom:1px solid var(--line-2);
  scrollbar-width:none;
}
.alpha::-webkit-scrollbar{display:none;}
.a-btn{
  flex:0 0 auto;height:26px;min-width:26px;padding:0 4px;border-radius:7px;
  border:1px solid var(--line);background:transparent;color:#5E665B;
  font-family:var(--num);font-size:12px;letter-spacing:0;
  cursor:pointer;transition:.18s;
}
.a-btn.all{font-family:var(--serif);font-size:11px;letter-spacing:.08em;padding:0 9px;}
.a-btn:hover:not(.offactive){border-color:#C6CFC0;color:var(--jade-text);}
.a-btn.offactive{opacity:.45;cursor:default;}
.a-btn.active{background:var(--jade-dark);border-color:var(--jade-dark);color:#FAF7EC;}

/* ---------- 卡片 ---------- */
.grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:10px;
  align-items:start;
  padding:12px 18px 8px;
}
.card{
  position:relative;overflow:hidden;
  display:flex;gap:10px;align-items:stretch;
  margin-bottom:0;padding:10px;border-radius:12px;
  background:var(--paper-2);
  border:1px solid var(--line);
  box-shadow:0 2px 6px rgba(90,78,50,.035);
  animation:fadeUp .4s both ease-out;
}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.card::before{
  content:"";position:absolute;top:0;right:0;width:0;height:0;
  border-top:18px solid #DCD3BD;border-left:18px solid transparent;
}
.card::after{
  content:"";position:absolute;top:0;right:0;width:0;height:0;
  border-top:17px solid #F1EDE0;border-left:17px solid transparent;
}
/* 左侧字牌(借鉴参考图的大图块位) */
.card-media{
  position:relative;z-index:2;
  flex:none;width:56px;border-radius:10px;
  display:grid;place-items:center;
  font-size:26px;letter-spacing:0;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.45),0 1px 3px rgba(90,78,50,.10);
}
/* 右侧信息列 */
.card-body{
  position:relative;z-index:2;flex:1;min-width:0;
  display:flex;flex-direction:column;
}
.cname{
  margin:1px 0 0;font-size:15px;font-weight:400;letter-spacing:.04em;
  color:#2F3B31;line-height:1.3;text-align:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.votes{display:flex;align-items:center;gap:4px;margin:6px 0 8px;font-family:var(--num);}
.votes b{
  display:inline-block;font-size:20px;font-weight:400;color:#2B352C;letter-spacing:-.02em;
  line-height:1.1;
}
.votes span{font-size:11px;color:var(--ink-3);font-family:var(--serif);letter-spacing:.04em;}
.share{
  flex:1;height:3px;border-radius:99px;background:#EAE4D2;
  margin:0 5px 0 7px;overflow:hidden;
}
.share i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#8CA48C,#3F5147);}
.pct{flex:none;font-size:10px;color:var(--ink-3);letter-spacing:.02em;}

/* 排名角标:全部显示,前三名金银铜,其余中性色 */
.card-rank{
  position:absolute;top:0;left:0;z-index:3;
  width:21px;height:21px;border-radius:9px 0 9px 0;
  display:grid;place-items:center;
  font-family:var(--num);font-size:11px;font-style:normal;
  background:linear-gradient(150deg,#DCD4C0,#C6BDA6);color:#5E5645;
}
.card-rank.rk1{background:linear-gradient(150deg,#CDB06E,#B2924E);color:#FDFBF4;}
.card-rank.rk2{background:linear-gradient(150deg,#C2BDAE,#A5A08F);color:#FDFBF4;}
.card-rank.rk3{background:linear-gradient(150deg,#CE9268,#B0764E);color:#FDFBF4;}

/* 投票按钮:切角造型呼应参考图的板块感 */
.vote{
  width:100%;height:33px;margin-top:auto;
  font-size:12.5px;font-weight:600;letter-spacing:.14em;
  cursor:pointer;transition:.16s ease;
  border:none;border-radius:0;
  clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px);
}
.vote.off{background:#EFEAD9;color:#6B7562;}
.vote.on{background:linear-gradient(135deg,#71836A,#3F5147);color:#F7F3E5;}
.vote.on:hover{filter:brightness(1.1);}
.vote.on:active{transform:translateY(1px);}
.vote.done{background:#F1EDE0;color:#9A9C8C;cursor:default;}
.vote[disabled]{cursor:wait;opacity:.75;}

.empty{
  grid-column:1 / -1;text-align:center;padding:44px 0 54px;
  color:var(--ink-3);font-size:13px;letter-spacing:.06em;
}
.empty span{display:block;margin-top:8px;font-size:11px;color:var(--ink-3);letter-spacing:.1em;}
.grid.no-anim .card{animation:none;}
.empty button{margin-top:14px;height:31px;padding:0 14px;border-radius:99px;border:1px solid var(--line);
  background:transparent;color:var(--jade-text);font-size:12px;letter-spacing:.06em;cursor:pointer;}

/* ---------- 分页 ---------- */
.pager{
  display:flex;align-items:center;justify-content:center;gap:6px;
  padding:6px 18px 4px;flex-wrap:wrap;
}
.pg-btn{
  min-width:30px;height:29px;padding:0 8px;border-radius:8px;
  border:1px solid var(--line);background:var(--paper-2);color:var(--ink-2);
  font-family:var(--num);font-size:12.5px;line-height:1;cursor:pointer;transition:.18s;
}
.pg-btn:hover:not(:disabled):not(.active){border-color:#C6CFC0;color:var(--jade-text);}
.pg-btn.active{background:var(--jade-dark);border-color:var(--jade-dark);color:#FAF7EC;}
.pg-btn:disabled{opacity:.4;cursor:default;}
.pg-btn.pg-nav{font-family:var(--serif);font-size:11.5px;letter-spacing:.06em;padding:0 10px;}
.pg-gap{color:var(--ink-3);font-size:12px;padding:0 1px;}

/* ---------- 页脚 ---------- */
.foot{padding:16px 18px calc(34px + env(safe-area-inset-bottom));text-align:center;}
.foot p{margin:0 0 8px;font-size:10.5px;letter-spacing:.06em;color:var(--ink-3);}
.foot .thanks-banner{
  display:block;margin:0 0 12px;
  border:1px solid var(--line);border-radius:10px;overflow:hidden;
  transition:box-shadow .18s;
}
.foot .thanks-banner:hover{box-shadow:0 6px 18px rgba(70,60,35,.16);}
.foot .thanks-banner img{display:block;width:100%;height:auto;}
.foot .icp{margin-bottom:0;}
.foot .icp a{color:var(--ink-3);text-decoration:none;}
.foot .icp a:hover{color:var(--jade-text);}

/* ---------- 特别鸣谢：悬浮印章 ---------- */
.thanks-fab{
  position:fixed;top:40%;z-index:90;
  right:calc(50% - min(50%, 240px) + 6px);
  display:flex;flex-direction:column;align-items:center;gap:7px;
  padding:10px 6px 11px;
  background:linear-gradient(170deg,#F8F1E3,#EFE3CB);
  border:1px solid #DCC79E;border-radius:9px 9px 9px 3px;
  box-shadow:0 5px 16px rgba(96,76,34,.18), inset 0 0 0 1px rgba(255,255,255,.6);
  cursor:pointer;
  animation:fabBreathe 3.4s ease-in-out infinite;
  transition:transform .18s, box-shadow .18s;
}
.thanks-fab:hover{transform:translateY(-2px);box-shadow:0 9px 22px rgba(96,76,34,.24), inset 0 0 0 1px rgba(255,255,255,.6);}
.thanks-fab:active{transform:translateY(0);}
.tf-seal{
  width:20px;height:20px;border-radius:5px;
  background:linear-gradient(160deg,#B84A32,#A6402C);
  color:#F8F2E4;display:grid;place-items:center;
  font-size:12px;line-height:1;font-style:normal;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.25);
}
.tf-text{
  writing-mode:vertical-rl;
  font-size:10px;line-height:1;letter-spacing:.3em;
  color:#8A6B3C;
}
@keyframes fabBreathe{
  0%,100%{box-shadow:0 5px 16px rgba(96,76,34,.18), inset 0 0 0 1px rgba(255,255,255,.6);}
  50%{box-shadow:0 5px 22px rgba(166,64,44,.3), inset 0 0 0 1px rgba(255,255,255,.6);}
}
.thanks-quote{
  margin:14px 0 4px;padding:16px 14px;text-align:center;
  font-size:14px;line-height:2;letter-spacing:.08em;color:#354033;
  background:linear-gradient(170deg,#F6F1E3,#F2ECD9);
  border:1px solid #E2D5B4;border-radius:10px;
  position:relative;
}
.thanks-quote::before,.thanks-quote::after{
  position:absolute;font-size:22px;line-height:1;color:#C9B478;
}
.thanks-quote::before{content:"「";left:8px;top:6px;}
.thanks-quote::after{content:"」";right:8px;bottom:2px;}
#thanksGo{display:flex;align-items:center;justify-content:center;text-decoration:none;}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:calc(48px + env(safe-area-inset-bottom));z-index:200;
  padding:9px 16px;border-radius:99px;
  background:rgba(44,55,47,.93);color:#F6F3EA;
  font-size:12.5px;letter-spacing:.05em;white-space:nowrap;max-width:86vw;
  overflow:hidden;text-overflow:ellipsis;
  transform:translate(-50%,10px);opacity:0;pointer-events:none;
  transition:.26s ease;
  box-shadow:0 8px 24px rgba(40,35,20,.24);
}
.toast.show{opacity:1;transform:translate(-50%,0);}

/* ---------- 弹层 ---------- */
.mask{
  position:fixed;inset:0;z-index:150;
  background:rgba(42,38,24,.34);
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
  display:flex;align-items:flex-end;justify-content:center;
  animation:maskIn .2s both;
}
@keyframes maskIn{from{opacity:0;}to{opacity:1;}}
.sheet{
  width:100%;max-width:480px;max-height:92dvh;overflow-y:auto;
  background:var(--paper);border-radius:16px 16px 0 0;
  padding:10px 20px calc(20px + env(safe-area-inset-bottom));
  box-shadow:0 -14px 40px rgba(50,42,25,.18);
  animation:sheetUp .3s cubic-bezier(.22,.9,.32,1) both;
}
@keyframes sheetUp{from{transform:translateY(24px);opacity:.6;}to{transform:none;opacity:1;}}
.sheet-grab{width:34px;height:3px;border-radius:99px;background:#DCD5C3;margin:0 auto 14px;}
.sheet h2{margin:0;font-size:20px;font-weight:700;letter-spacing:.06em;color:#354033;}
.sheet-sub{margin:6px 0 4px;font-size:12px;letter-spacing:.04em;color:var(--ink-3);line-height:1.7;}
.sheet-sm{padding-bottom:calc(16px + env(safe-area-inset-bottom));}

.field{margin-top:12px;}
.field label{display:block;font-size:11.5px;letter-spacing:.06em;color:var(--ink-2);margin-bottom:6px;}
.field input,.code-row input{
  width:100%;height:42px;border-radius:8px;
  border:1px solid var(--line);background:var(--paper-2);
  padding:0 12px;font-family:var(--serif);font-size:13px;color:var(--ink);
  letter-spacing:.06em;outline:none;transition:.18s;
}
.field input:focus,.code-row input:focus{border-color:#B9C4B4;box-shadow:0 0 0 3px rgba(140,164,140,.12);}
.field input::placeholder{color:#66644F;}

.cap-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.captcha-box{
  flex:0 0 auto;height:40px;padding:0;border:1px solid var(--line);border-radius:8px;
  background:var(--paper-2);overflow:hidden;cursor:pointer;line-height:0;
}
.captcha-box svg{display:block;width:122px;height:40px;}
.cap-loading{display:grid;place-items:center;width:122px;height:40px;font-size:10px;color:var(--ink-3);letter-spacing:.08em;}
.cap-refresh{
  height:32px;padding:0 10px;border-radius:7px;border:1px solid var(--line);
  background:transparent;color:var(--ink-3);font-size:10px;letter-spacing:.08em;cursor:pointer;
}
.cap-refresh:hover{color:var(--jade-text);border-color:#C6CFC0;}

.code-row{display:flex;gap:8px;align-items:center;}
.code-row input{flex:1;min-width:0;}
.send-code{
  flex:0 0 auto;width:104px;height:42px;border-radius:8px;
  border:1px solid #9CB096;background:#FBF9F3;color:var(--jade-text);
  font-size:11px;letter-spacing:.06em;cursor:pointer;transition:.16s;
}
.send-code:hover:not(:disabled){background:var(--jade-dark);border-color:var(--jade-dark);color:#FAF7EC;}
.send-code:disabled{opacity:.5;cursor:default;}

.agree{
  display:flex;align-items:flex-start;gap:7px;
  margin-top:14px;font-size:10px;line-height:1.7;letter-spacing:.04em;color:#5B645B;
  cursor:pointer;
}
.agree input{margin:2px 0 0;width:13px;height:13px;accent-color:var(--jade-dark);flex:0 0 auto;}
.agree a{color:var(--red);text-decoration:none;}
.agree a:hover{text-decoration:underline;}

.form-error{
  min-height:16px;margin:8px 0 0;font-size:11.5px;letter-spacing:.04em;color:var(--red);
}
.submit{
  width:100%;height:43px;margin-top:2px;border:0;border-radius:9px;
  background:var(--jade-dark);color:#FAF7EC;
  font-size:13px;letter-spacing:.08em;cursor:pointer;transition:.18s;
}
.submit:hover{background:#334339;}
.submit:disabled{opacity:.6;cursor:wait;}
.submit.ghost{background:transparent;border:1px solid #D8C9B7;color:var(--red);margin-top:16px;}
.submit.ghost:hover{background:rgba(166,64,44,.06);}
.sheet-close{
  width:100%;height:37px;margin-top:4px;border:0;background:transparent;
  color:var(--ink-3);font-size:12px;letter-spacing:.06em;cursor:pointer;
}
.sheet-tip{margin:8px 0 0;text-align:center;font-size:10px;letter-spacing:.05em;color:var(--ink-3);}

.account-stats{
  display:flex;margin:16px 0 4px;padding:12px 0;
  border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2);
}
.account-stats div{flex:1;text-align:center;font-size:11px;letter-spacing:.06em;color:var(--ink-3);}
.account-stats b{display:block;margin-bottom:3px;font-family:var(--num);font-size:22px;font-weight:400;color:#354033;}

.account-profile{
  display:flex;align-items:center;gap:8px;
  padding:10px 2px;font-size:12px;letter-spacing:.04em;
}
.account-profile .ap-label{color:var(--ink-3);flex-shrink:0;}
.account-profile .ap-value{flex:1;min-width:0;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.account-profile .ap-value.empty{color:var(--red);}
.account-profile .ap-edit{
  flex-shrink:0;height:26px;padding:0 12px;border-radius:13px;
  border:1px solid #D8C9B7;background:transparent;color:var(--ink-2);
  font-size:11px;letter-spacing:.06em;cursor:pointer;transition:.18s;
}
.account-profile .ap-edit:hover{border-color:var(--jade-dark);color:var(--jade-dark);}

.noscript{
  position:fixed;inset:0;z-index:300;display:grid;place-items:center;
  background:var(--paper);color:var(--ink);font-size:13px;letter-spacing:.1em;
}

/* ---------- 主题：墨金（取自 banner 夜雨主视觉） ---------- */
html[data-theme="ink"]{
  --paper:#151C18;
  --paper-2:#1D2621;
  --ink:#EAE3D1;
  --ink-2:#C6C0AB;
  --ink-3:#9D9C86;
  --line:#33403A;
  --line-2:#28332D;
  --jade:#7F9C8B;
  --jade-dark:#3D5448;
  --jade-text:#A9C4B4;
  --red:#CF7357;
  --gold:#C3A568;
}
html[data-theme="ink"] body{
  background:
    radial-gradient(circle at 20% 0%, #1E2722 0%, transparent 55%),
    radial-gradient(circle at 90% 100%, #1A211D 0%, transparent 45%),
    #0E1311;
}
html[data-theme="ink"] .phone{
  box-shadow:0 0 0 1px rgba(195,165,104,.10),0 26px 70px rgba(0,0,0,.55);
}
html[data-theme="ink"] .seal{
  background:linear-gradient(160deg,#26332B,#1B2420);
  border-color:#3A4A41;color:#D9C89B;
  box-shadow:inset 0 0 0 1px rgba(217,200,155,.16);
}
html[data-theme="ink"] .seal-img{border-color:#3A4A41;box-shadow:0 1px 6px rgba(0,0,0,.45);}
html[data-theme="ink"] .chip{background:rgba(255,255,255,.05);}
html[data-theme="ink"] .chip:hover{border-color:#4B6154;color:var(--jade-text);}
html[data-theme="ink"] .chip.logged{background:rgba(127,156,139,.14);border-color:#3E5548;color:var(--jade-text);}

html[data-theme="ink"] .dm-wrap{background:linear-gradient(180deg,#1A211D,#1C2420);}
html[data-theme="ink"] .lane::before{background:linear-gradient(90deg,#1B231F 8%,rgba(27,35,31,0));}
html[data-theme="ink"] .lane::after{background:linear-gradient(270deg,#1B231F 8%,rgba(27,35,31,0));}
html[data-theme="ink"] .dm{background:rgba(234,227,209,.08);border-color:#2E3A34;color:#D9D3C0;}
html[data-theme="ink"] .dm b{color:#EFE8D6;}
html[data-theme="ink"] .dm b::after{color:#9D9C86;}

html[data-theme="ink"] .banner{background:linear-gradient(170deg,#1B2420,#18201C);}
html[data-theme="ink"] .banner .mountains{display:none;}
html[data-theme="ink"] .year{color:#C9C2AD;}
html[data-theme="ink"] .hero{color:var(--ink);}
html[data-theme="ink"] .hero em{text-shadow:none;}
html[data-theme="ink"] .sub{color:#B8B5A1;}
html[data-theme="ink"] .tag{background:rgba(255,255,255,.05);border-color:rgba(207,115,87,.55);}

html[data-theme="ink"] .cd{background:var(--paper-2);box-shadow:0 1px 0 rgba(255,255,255,.05) inset;}
html[data-theme="ink"] .cd-clock b{color:#EFE8D6;}
html[data-theme="ink"] .sep{color:#8E8B76;}

html[data-theme="ink"] .search{background:var(--paper-2);}
html[data-theme="ink"] .search:focus-within{border-color:#4E6357;box-shadow:0 0 0 3px rgba(127,156,139,.16);}
html[data-theme="ink"] .search input::placeholder,
html[data-theme="ink"] .search .clear{color:#8E8B76;}

html[data-theme="ink"] .stats{background:linear-gradient(180deg,#1E2622,#1A211D);}
html[data-theme="ink"] .stats-head h3,
html[data-theme="ink"] .stat b{color:var(--ink);}
html[data-theme="ink"] .stat + .stat::before{background:#313D36;}

html[data-theme="ink"] .list-head .t{color:var(--ink-2);}

html[data-theme="ink"] .alpha{background:rgba(21,28,24,.95);}
html[data-theme="ink"] .a-btn{color:var(--ink-2);}
html[data-theme="ink"] .a-btn:hover:not(.offactive){border-color:#4B6154;color:var(--jade-text);}
html[data-theme="ink"] .a-btn.active{background:#3D5448;border-color:#3D5448;color:#F3EDDC;}

html[data-theme="ink"] .card{box-shadow:0 2px 8px rgba(0,0,0,.28);}
html[data-theme="ink"] .card::before{border-top-color:#3A4A41;}
html[data-theme="ink"] .card::after{border-top-color:#1F2823;}
html[data-theme="ink"] .cname,
html[data-theme="ink"] .votes b,
html[data-theme="ink"] .account-stats b{color:var(--ink);}

html[data-theme="ink"] .vote.off{background:#202823;color:var(--ink-2);}
html[data-theme="ink"] .vote.on{background:linear-gradient(135deg,#2E3D34,#1D2621);color:#EFE8D6;}
html[data-theme="ink"] .vote.on:hover{background:#3D5448;color:#F3EDDC;}
html[data-theme="ink"] .vote.done{background:#1C231E;color:var(--ink-3);}
html[data-theme="ink"] .empty button{color:var(--jade-text);}
html[data-theme="ink"] .pg-btn{background:var(--paper-2);color:var(--ink-2);}
html[data-theme="ink"] .pg-btn:hover:not(:disabled):not(.active){border-color:#4B6154;color:var(--jade-text);}
html[data-theme="ink"] .pg-btn.active{background:#3D5448;border-color:#3D5448;color:#F3EDDC;}

html[data-theme="ink"] .toast{background:rgba(234,227,209,.95);color:#1B221E;box-shadow:0 8px 24px rgba(0,0,0,.5);}

html[data-theme="ink"] .mask{background:rgba(6,10,8,.62);}
html[data-theme="ink"] .sheet{box-shadow:0 -14px 40px rgba(0,0,0,.5);}
html[data-theme="ink"] .sheet-grab{background:#3A463F;}
html[data-theme="ink"] .sheet h2{color:var(--ink);}
html[data-theme="ink"] .field input::placeholder{color:#8E8B76;}
html[data-theme="ink"] .field input:focus,
html[data-theme="ink"] .code-row input:focus{border-color:#4E6357;box-shadow:0 0 0 3px rgba(127,156,139,.16);}
html[data-theme="ink"] .send-code{background:#202823;border-color:#4E6357;color:var(--jade-text);}
html[data-theme="ink"] .send-code:hover:not(:disabled){background:#3D5448;border-color:#3D5448;color:#F3EDDC;}
html[data-theme="ink"] .submit{background:#3D5448;color:#F3EDDC;}
html[data-theme="ink"] .submit:hover{background:#4A6557;}
html[data-theme="ink"] .submit.ghost{border-color:#4A3A30;color:#D8846A;}
html[data-theme="ink"] .submit.ghost:hover{background:rgba(207,115,87,.1);}
html[data-theme="ink"] .agree{color:#B8B5A1;}
html[data-theme="ink"] .cap-refresh:hover{color:var(--jade-text);border-color:#4B6154;}
html[data-theme="ink"] .foot .icp a:hover{color:var(--jade-text);}
html[data-theme="ink"] .foot .thanks-banner{border-color:#3A4A41;}
html[data-theme="ink"] .dm-input input{background:rgba(255,255,255,.05);border-color:#3A4A41;color:#D8D2BC;}
html[data-theme="ink"] .dm-input input::placeholder{color:#5C6B5F;}
html[data-theme="ink"] .dm-input input:focus{border-color:#B99B4F;box-shadow:0 0 0 3px rgba(185,155,79,.16);}
html[data-theme="ink"] .dm-input button{background:linear-gradient(135deg,#B99B4F,#93763A);color:#241D0F;}
html[data-theme="ink"] .thanks-fab{
  background:linear-gradient(170deg,#26332B,#1B2420);
  border-color:#54483A;
  box-shadow:0 5px 16px rgba(0,0,0,.4), inset 0 0 0 1px rgba(217,200,155,.16);
}
html[data-theme="ink"] .thanks-fab:hover{box-shadow:0 9px 22px rgba(0,0,0,.5), inset 0 0 0 1px rgba(217,200,155,.24);}
html[data-theme="ink"] .tf-text{color:#C3A568;}
html[data-theme="ink"] .thanks-quote{
  color:#EAE3D1;
  background:linear-gradient(170deg,#212B25,#1D2620);
  border-color:#3A4A41;
}
html[data-theme="ink"] .thanks-quote::before,html[data-theme="ink"] .thanks-quote::after{color:#C3A568;}

/* ---------- 墨金：三甲 / 战报 / 我的投票 ---------- */
html[data-theme="ink"] .podium{box-shadow:0 1px 0 rgba(255,255,255,.05) inset;}
html[data-theme="ink"] .podium-row{border-bottom-color:#2E3A34;}
html[data-theme="ink"] .podium-head h3{color:var(--ink-2);}
html[data-theme="ink"] .pod{background:linear-gradient(180deg,#202824,#1B231F);border-color:#2E3A34;}
html[data-theme="ink"] .pod.p1{background:linear-gradient(180deg,#26302A,#202923);border-color:#4A4436;}
html[data-theme="ink"] .pod-rank{color:#151C18;background:#C3A568;}
html[data-theme="ink"] .pod.p1 .pod-rank{color:#1B140F;background:#CF7357;}
html[data-theme="ink"] .pod-num{color:#151C18;background:#C3A568;border-color:#202823;}
html[data-theme="ink"] .pod.p1 .pod-num{color:#1B140F;background:#CF7357;}
html[data-theme="ink"] .pod-name{color:var(--ink-2);}
html[data-theme="ink"] .pod-votes{color:var(--ink);}
html[data-theme="ink"] .pod.p1 .pod-votes{color:#CF7357;}
html[data-theme="ink"] .card-rank.rk1{color:#1B140F;}
html[data-theme="ink"] .card-rank.rk2{color:#151C18;}
html[data-theme="ink"] .card-rank.rk3{color:#1B140F;}
html[data-theme="ink"] .share{background:#2E3A34;}
html[data-theme="ink"] .share i{background:linear-gradient(90deg,#7F9C8B,#C3A568);}
html[data-theme="ink"] .flash-dot{background:var(--red);}
html[data-theme="ink"] .myvote{background:linear-gradient(150deg,#232D27,#1D2621);border-color:#4A4436;}
html[data-theme="ink"] .mv-body b{color:var(--ink);}
html[data-theme="ink"] .mv-btn{color:var(--jade-text);border-color:#3D5448;}
html[data-theme="ink"] .mv-btn:hover{background:#3D5448;color:#EAE3D1;}
