/* 民意传真科 · 两处共用样式（0905 从 index.html 抽出；页面专属样式在各自页内） */
:root{
  --paper:#faf3e2;--paper-2:#f0e3c4;--card:#fffdf6;--ink:#28211a;--muted:#6b5f4e;
  --banana:#f5b731;--teal:#1f9e8e;--red:#e0452c;--purple:#8e6fd8;--green:#63b06b;
  --shadow:0 5px 0 rgba(40,33,26,.22);
  --sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --serif:"Songti SC","STSong","Noto Serif CJK SC",serif;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{background:var(--paper)}
body{font-family:var(--sans);color:var(--ink);min-height:100svh;padding:18px 14px 40px;overflow-x:hidden}
.wrap{max-width:560px;margin:0 auto}
header{text-align:center;margin-bottom:10px;position:relative}
.notice-no{display:inline-block;background:var(--red);color:#fffdf6;font-weight:1000;font-size:12px;
  padding:4px 12px;border-radius:999px;border:2.5px solid var(--ink);transform:rotate(-2deg);letter-spacing:.06em;cursor:pointer;user-select:none}
h1{font-family:var(--serif);font-weight:1000;font-size:30px;margin:10px 0 4px}
.sub{color:var(--muted);font-size:13px;font-weight:800}
.ticker{margin:12px auto 0;max-width:520px;border:2px dashed #a7977c;border-radius:10px;background:#f8efd9;
  color:var(--muted);font-size:12px;font-weight:800;padding:7px 10px;min-height:32px;transition:opacity .45s}
.ticker.fade{opacity:0}
/* 今天还剩几题。这一页是一长条，滚到底才知道自己漏了哪题——
   把「还差什么」摆在最上面，比让人自己数快得多。 */
.vote-nav{position:sticky;top:0;z-index:20;margin:0 0 12px;padding:9px 10px;background:var(--paper);
  border:3px solid var(--ink);border-radius:16px;box-shadow:var(--shadow);}
.vote-nav .vn-line{font-size:12px;font-weight:1000;color:var(--ink);margin-bottom:7px;}
.vote-nav .vn-line b{color:var(--red);}
.vote-nav .vn-chips{display:flex;flex-wrap:wrap;gap:6px;}
.vn-chip{appearance:none;border:2px solid var(--ink);border-radius:999px;background:var(--card);
  color:var(--ink);font:inherit;font-size:11px;font-weight:900;padding:5px 11px;cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;}
.vn-chip:hover{background:var(--paper-2);}
.vn-chip .vn-dot{width:8px;height:8px;border-radius:50%;border:2px solid var(--ink);background:var(--card);flex:0 0 auto;}
.vn-chip.done{color:var(--muted);border-color:rgba(40,33,26,.35);}
.vn-chip.done .vn-dot{background:var(--teal);border-color:var(--teal);}
.vn-chip.todo .vn-dot{background:var(--banana);}
/* 选项一多（正典角色有三十几位），一格一格找人太慢。给长题配一个即时筛选。 */
.opt-filter{display:flex;align-items:center;gap:7px;margin:0 0 9px;padding:7px 10px;
  border:2px dashed rgba(40,33,26,.45);border-radius:12px;background:var(--paper);}
.opt-filter input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--ink);
  font:inherit;font-size:13px;font-weight:800;}
.opt-filter input::placeholder{color:var(--muted);font-weight:700;}
.opt-filter small{color:var(--muted);font-size:11px;font-weight:900;white-space:nowrap;}
.opt[hidden]{display:none!important;}
.poll{background:var(--card);border:3px solid var(--ink);border-radius:18px;box-shadow:var(--shadow);
  padding:16px 14px;margin:16px 0;position:relative}
.poll h2{font-family:var(--serif);font-size:20px;font-weight:1000}
.poll .hint{color:var(--muted);font-size:12px;font-weight:800;margin:4px 0 10px}
.opts{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.opts.plain{grid-template-columns:1fr}
.opt{position:relative;text-align:left;border:2.5px solid var(--ink);border-radius:12px;background:var(--card);
  padding:8px 9px;font:900 13px/1.3 var(--sans);color:var(--ink);cursor:pointer;box-shadow:0 3px 0 rgba(40,33,26,.14)}
.opt:active{transform:translateY(2px);box-shadow:none}
.opt small{display:block;color:var(--muted);font-size:10px;font-weight:800;margin-top:2px}
.opt .bar{position:absolute;left:0;top:0;bottom:0;background:rgba(245,183,49,.28);border-radius:9px 0 0 9px;
  width:0;transition:width .5s cubic-bezier(.2,.9,.2,1);pointer-events:none}
/* 票数的位置分两种：宽卡（单列议题）挂在右侧；窄卡（角色三列格）绝对定位会压住
   卡面文字，改成落在文字流里。 */
.opts.plain .opt{padding-right:56px}
.opts.plain .pct{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-weight:1000;font-size:12px;color:var(--muted)}
.opts:not(.plain) .pct{display:block;position:relative;margin-top:3px;font-weight:1000;font-size:10px;color:var(--teal)}
.opt.mine{background:#fff0af;outline:3px solid var(--banana)}
.opt.mine::after{content:'已传真';position:absolute;right:-6px;top:-9px;background:var(--red);color:#fffdf6;
  font-size:10px;font-weight:1000;padding:2px 7px;border-radius:999px;border:2px solid var(--ink);transform:rotate(8deg)}
.opt.sel{outline:3px dashed var(--teal);background:#eafaf4}
.opt.sel::after{content:'待发送';position:absolute;right:-6px;top:-9px;background:var(--teal);color:#fffdf6;
  font-size:10px;font-weight:1000;padding:2px 7px;border-radius:999px;border:2px solid var(--ink);transform:rotate(8deg)}
.opt[disabled]{opacity:.55;cursor:default}
.send-row{margin-top:10px;display:none}
.send-row.show{display:block}
.send-row button{width:100%;border:3px solid var(--ink);border-radius:13px;background:var(--banana);
  padding:11px 12px;font:1000 15px var(--sans);cursor:pointer;box-shadow:0 4px 0 rgba(40,33,26,.2)}
.send-row button:active{transform:translateY(2px);box-shadow:none}
/* 今日对决 */
.duel-arena{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:stretch}
.duel-opt{border:3px solid var(--ink);border-radius:14px;background:var(--card);cursor:pointer;
  padding:14px 8px;text-align:center;font:1000 17px/1.3 var(--serif);box-shadow:0 4px 0 rgba(40,33,26,.18)}
.duel-opt:active{transform:translateY(2px);box-shadow:none}
.duel-opt small{display:block;font:800 10px var(--sans);color:var(--muted);margin-top:5px}
.duel-opt.mine{background:#fff0af;outline:3px solid var(--banana)}
.duel-vs{align-self:center;background:var(--ink);color:var(--paper);font:1000 13px var(--sans);
  border-radius:999px;padding:7px 9px;transform:rotate(-6deg)}
.duel-split{margin-top:10px;height:18px;border:2.5px solid var(--ink);border-radius:999px;overflow:hidden;display:none}
.duel-split.show{display:flex}
.duel-split i{display:block;height:100%;background:var(--teal)}
.duel-split b{display:block;height:100%;background:var(--purple);flex:1}
.duel-report{margin-top:8px;font-size:12px;font-weight:800;color:var(--muted)}
/* 民意预报处：押注、回执、工牌 */
.call-box{margin:10px 0;border:2.5px dashed var(--teal);border-radius:14px;padding:11px 10px;background:#f2fbf8}
.call-box h3{font-family:var(--serif);font-size:15px;font-weight:1000;margin-bottom:3px}
.call-box p{font-size:11.5px;font-weight:800;color:var(--muted);line-height:1.6}
.call-btns{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}
.call-btns button{border:2.5px solid var(--ink);border-radius:12px;background:var(--card);padding:10px 6px;
  font:1000 15px var(--serif);cursor:pointer;box-shadow:0 3px 0 rgba(40,33,26,.16)}
.call-btns button:active{transform:translateY(2px);box-shadow:none}
.call-done{margin-top:8px;font-size:12px;font-weight:800;color:var(--teal)}
.sealed{border:2.5px solid var(--ink);border-radius:14px;background:#fff6d8;padding:12px 11px;margin:12px 0;
  cursor:pointer;position:relative;box-shadow:var(--shadow)}
.sealed h3{font-family:var(--serif);font-size:16px;font-weight:1000}
.sealed p{font-size:12px;font-weight:800;color:var(--muted);margin-top:4px}
.sealed .wax{position:absolute;right:12px;top:-8px;background:var(--red);color:#fffdf6;font-size:10px;font-weight:1000;
  padding:3px 9px;border-radius:999px;border:2px solid var(--ink);transform:rotate(7deg)}
.badge{background:var(--card);border:3px solid var(--ink);border-radius:16px;box-shadow:var(--shadow);padding:13px 12px;margin:14px 0}
.badge .rank{font-family:var(--serif);font-size:22px;font-weight:1000;line-height:1.25}
.badge .verdict{font-size:12px;font-weight:800;color:var(--muted);margin-top:5px;line-height:1.65}
.badge .nums{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px}
.badge .num{border:2px solid var(--ink);border-radius:10px;padding:4px 9px;font:1000 12px var(--sans);background:#fffdf6}
.badge .num b{font-size:15px}
.badge .bar{margin-top:9px;height:12px;border:2px solid var(--ink);border-radius:999px;overflow:hidden;background:#f0e3c4}
.badge .bar i{display:block;height:100%;background:var(--banana)}
.badge .gap{font-size:11.5px;font-weight:800;color:var(--muted);margin-top:5px}
.badge .keep{margin-top:9px;border-top:1.5px dashed #c9b995;padding-top:8px;font-size:11px;font-weight:800;color:var(--muted);line-height:1.6}
.badge .keep code{background:#f0e3c4;border-radius:5px;padding:1px 5px;font-size:11px;user-select:all}
/* 勋章墙、档案室、成绩卡 */
.medals{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.medal{border:2px solid var(--ink);border-radius:999px;padding:3px 10px;font:1000 11px var(--sans);background:#fff0af}
.medal.locked{background:#efe6d2;color:#9c8f7a;border-color:#c9b995}
.acts{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.acts button{border:2.5px solid var(--ink);border-radius:11px;background:var(--card);padding:7px 12px;
  font:1000 12px var(--sans);cursor:pointer}
.acts button.gold{background:var(--banana)}
.acts button[disabled]{opacity:.5;cursor:default}
.week{margin-top:10px;border-top:1.5px dashed #c9b995;padding-top:8px;font-size:12px;font-weight:800;color:var(--muted);line-height:1.7}
.week b{color:var(--ink)}
#archive{position:fixed;inset:0;background:rgba(40,33,26,.55);display:none;align-items:flex-start;justify-content:center;z-index:25;padding:16px;overflow-y:auto}
#archive.show{display:flex}
#archive .paper{width:100%;max-width:560px;background:var(--card);border:3px solid var(--ink);border-radius:16px;
  box-shadow:var(--shadow);padding:16px 14px;margin:16px 0}
#archive h3{font-family:var(--serif);font-size:19px;font-weight:1000}
#archive .close{float:right;border:2.5px solid var(--ink);border-radius:10px;background:var(--card);font:1000 12px var(--sans);padding:5px 10px;cursor:pointer}
#archive table{width:100%;border-collapse:collapse;font-size:12px;font-weight:800;margin-top:8px}
#archive td,#archive th{border-bottom:1.5px solid #d8c9a8;padding:4px 6px;text-align:left}
#archive .locked-note{border:2px dashed #a7977c;border-radius:10px;padding:9px;background:#f8efd9;font-size:12px;font-weight:800;color:var(--muted);margin-top:9px;line-height:1.7}
#cardBox{position:fixed;inset:0;background:rgba(40,33,26,.62);display:none;align-items:center;justify-content:center;z-index:26;padding:18px;overflow-y:auto}
#cardBox.show{display:flex}
#cardBox .inner{max-width:400px;text-align:center}
#cardBox img{width:100%;border:3px solid var(--ink);border-radius:14px;box-shadow:var(--shadow);background:var(--card)}
#cardBox p{color:var(--paper);font-size:12px;font-weight:800;margin-top:10px;line-height:1.8}
#cardBox a,#cardBox button{display:inline-block;margin:8px 5px 0;border:2.5px solid var(--ink);border-radius:11px;
  background:var(--banana);padding:8px 14px;font:1000 13px var(--sans);color:var(--ink);text-decoration:none;cursor:pointer}
.share-row{margin-top:9px;display:none}
.share-row.show{display:block}
.share-row button{border:2.5px solid var(--ink);border-radius:11px;background:var(--card);
  padding:7px 12px;font-weight:1000;cursor:pointer;font-size:12px;color:var(--teal)}
.note-row{margin-top:10px;display:grid;grid-template-columns:auto 1fr auto;gap:7px}
.note-row select{border:2.5px solid var(--ink);border-radius:11px;background:var(--card);padding:0 6px;
  font:900 12px var(--sans);color:var(--muted);max-width:92px}
.note-row input{min-width:0;border:2.5px solid var(--ink);border-radius:11px;background:var(--card);
  padding:9px 10px;font:900 16px var(--sans)}
.note-row button{border:2.5px solid var(--ink);border-radius:11px;background:var(--banana);
  padding:8px 12px;font-weight:1000;cursor:pointer;font-size:13px}
.status{margin-top:9px;font-size:12px;font-weight:800;color:var(--muted);border:2px dashed #a7977c;
  border-radius:10px;padding:7px 9px;background:#f8efd9}
.status.err{color:var(--red);border-color:var(--red)}
footer{text-align:center;color:var(--muted);font-size:11px;font-weight:800;margin-top:22px;line-height:1.7}
footer a{color:var(--teal)}
#qaReport{display:none;white-space:pre-wrap;background:#101512;color:#d4ffe3;border:2px solid #7bea9a;
  border-radius:12px;padding:12px;font:12px/1.6 ui-monospace,monospace;margin-top:14px}
/* 彩蛋们：纯装饰，出不出现不影响任何功能 */
#hatDrift{position:fixed;top:8px;left:-80px;width:64px;pointer-events:none;z-index:9}
#donkeyPeek{position:fixed;right:-96px;top:38%;width:92px;pointer-events:none;z-index:9;transition:right 1.2s cubic-bezier(.2,.9,.3,1)}
#donkeyPeek.in{right:-34px}
.egg-stamp{position:absolute;right:10px;bottom:8px;width:52px;pointer-events:none;opacity:.9;transform:rotate(9deg)}
.survey-head{margin:26px 0 2px;text-align:center}
.survey-head h2{font-family:var(--serif);font-size:22px;font-weight:1000;display:inline-block;border-bottom:4px solid var(--banana);padding:0 6px 2px}
.survey-head p{color:var(--muted);font-size:12px;font-weight:800;margin-top:6px}
#repairLog{position:fixed;inset:0;background:rgba(40,33,26,.55);display:none;align-items:center;justify-content:center;z-index:20;padding:20px}
#repairLog.show{display:flex}
#repairLog .paper{max-width:420px;background:var(--card);border:3px solid var(--ink);border-radius:16px;
  box-shadow:var(--shadow);padding:18px 16px;font-size:13px;font-weight:800;line-height:2}
#repairLog h3{font-family:var(--serif);font-size:18px;margin-bottom:6px}
/* 科长室（管理员后台）：连点大标题七下 + 管理员密码进门。密码只在内存，绝不落 localStorage。 */
.adm-mask{position:fixed;inset:0;background:rgba(40,33,26,.55);display:none;align-items:flex-start;justify-content:center;z-index:30;padding:16px;overflow-y:auto}
.adm-mask.show{display:flex}
.adm-paper{width:100%;max-width:560px;background:var(--card);border:3px solid var(--ink);border-radius:16px;
  box-shadow:var(--shadow);padding:16px 14px;margin:16px 0}
.adm-paper h3{font-family:var(--serif);font-size:19px;font-weight:1000}
.adm-close{float:right;border:2.5px solid var(--ink);border-radius:10px;background:var(--card);
  font:1000 12px var(--sans);padding:5px 10px;cursor:pointer}
.adm-row{display:grid;grid-template-columns:1fr auto;gap:7px;margin-top:10px}
.adm-row input{min-width:0;border:2.5px solid var(--ink);border-radius:11px;background:var(--card);padding:9px 10px;font:900 16px var(--sans)}
.adm-row button{border:2.5px solid var(--ink);border-radius:11px;background:var(--banana);padding:8px 14px;font-weight:1000;cursor:pointer;font-size:13px}
.adm-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.adm-tabs button{border:2.5px solid var(--ink);border-radius:999px;background:var(--card);padding:6px 12px;font:1000 12px var(--sans);cursor:pointer}
.adm-tabs button.on{background:var(--banana)}
.adm-note{border:2px solid var(--ink);border-radius:10px;padding:7px 9px;margin:6px 0;font-size:13px;font-weight:800;background:var(--card);overflow-wrap:anywhere}
.adm-note small{color:var(--muted);display:block;margin-top:3px;font-size:11px;font-weight:800}
.adm-note .cat{display:inline-block;background:var(--teal);color:#fffdf6;border-radius:999px;padding:1px 8px;font-size:10px;font-weight:1000;margin-right:5px}
.adm-table{width:100%;border-collapse:collapse;font-size:12px;font-weight:800;margin:6px 0}
.adm-table td,.adm-table th{border-bottom:1.5px solid #d8c9a8;padding:4px 6px;text-align:left}
.adm-sub{color:var(--muted);font-size:12px;font-weight:800;margin:6px 0}
.adm-danger{border:2.5px dashed var(--red);border-radius:12px;padding:10px;margin-top:10px}
.adm-danger select,.adm-danger input{border:2.5px solid var(--ink);border-radius:10px;background:var(--card);padding:7px 9px;font:900 14px var(--sans);margin:4px 4px 4px 0}
.adm-danger button{border:2.5px solid var(--red);color:var(--red);border-radius:10px;background:var(--card);padding:7px 12px;font-weight:1000;cursor:pointer}
@keyframes hat-drift{from{transform:translateX(0) rotate(-8deg)}to{transform:translateX(120vw) rotate(14deg)}}
@media (prefers-reduced-motion: reduce){#hatDrift,#donkeyPeek{display:none}}
@media (max-width:379px){.opts{grid-template-columns:repeat(2,1fr)}}
</style>
</head>
<body>

/* ===== 0905 二轮：轻、大、当场看结果 ===== */
.opts.plain .opt{padding:13px 60px 13px 13px;font-size:15px;border-width:2px;border-radius:14px}
.opt .bar{transition:width .9s cubic-bezier(.16,1,.3,1)}
.note-toggle{margin-top:10px;background:none;border:0;color:var(--muted);font:800 12px var(--sans);text-decoration:underline dotted;cursor:pointer;padding:2px 0}
.note-row.hide{display:none}
/* 进度环与今日剂量 */
.dose{display:flex;align-items:center;gap:12px;background:var(--card);border:3px solid var(--ink);border-radius:16px;padding:10px 12px;margin:12px 0;box-shadow:var(--shadow)}
.dose svg{width:52px;height:52px;flex:0 0 auto}
.dose .ring-bg{fill:none;stroke:#ecdfc0;stroke-width:6}
.dose .ring-fg{fill:none;stroke:var(--teal);stroke-width:6;stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%;transition:stroke-dashoffset .9s cubic-bezier(.16,1,.3,1)}
.dose .ring-txt{font:1000 13px var(--sans);fill:var(--ink)}
.dose b{font-family:var(--serif);font-size:16px}
.dose p{font-size:12px;font-weight:800;color:var(--muted);margin-top:2px;line-height:1.5}
.card-enter{animation:cardIn .55s cubic-bezier(.16,1,.3,1) both}
@keyframes cardIn{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
.rest{background:var(--card);border:3px dashed var(--ink);border-radius:18px;padding:18px 14px;margin:16px 0;text-align:center}
.rest h2{font-family:var(--serif);font-size:20px;font-weight:1000}
.rest p{color:var(--muted);font-size:13px;font-weight:800;margin:6px 0 12px;line-height:1.6}
.rest button,.done-list button{border:2.5px solid var(--ink);border-radius:12px;background:var(--banana);padding:9px 14px;font:1000 14px var(--sans);cursor:pointer;box-shadow:0 3px 0 rgba(40,33,26,.18)}
.rest button.ghost,.done-list button.ghost{background:var(--card);font-weight:900;font-size:12px;padding:6px 10px;box-shadow:none}
.stamp-done{display:inline-block;border:3px solid var(--red);color:var(--red);border-radius:8px;padding:4px 12px;font:1000 18px var(--serif);letter-spacing:.2em;transform:rotate(-8deg);animation:stampIn .6s cubic-bezier(.16,1,.3,1) both;margin:6px 0 10px}
@keyframes stampIn{from{opacity:0;transform:rotate(-8deg) scale(1.8)}60%{opacity:1;transform:rotate(-8deg) scale(.95)}to{transform:rotate(-8deg) scale(1)}}
.done-list{margin:14px 0}
.done-list h3{font-family:var(--serif);font-size:15px;font-weight:1000;margin:0 4px 6px;color:var(--muted)}
.done-item{display:flex;align-items:center;gap:8px;background:var(--card);border:2px solid rgba(40,33,26,.35);border-radius:12px;padding:8px 10px;margin:6px 0}
.done-item .t{flex:1;min-width:0;font-size:12px;font-weight:900}
.done-item .t small{display:block;color:var(--muted);font-weight:800;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 趣味处：今日三件事 */
.strip{display:flex;gap:8px;margin:12px 0}
.strip a{flex:1;text-decoration:none;color:var(--ink);background:var(--card);border:2.5px solid var(--ink);border-radius:14px;padding:8px 6px;text-align:center;font:1000 12px var(--sans);box-shadow:var(--shadow)}
.strip a small{display:block;font-size:10px;font-weight:800;color:var(--muted);margin-top:2px}
.strip a.done{background:#eafaf4;border-color:var(--teal);color:var(--teal)}
/* 集赞：领奖台 + 名字牌 */
.podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:8px;align-items:end;margin:8px 0 12px}
.podium div{border:2.5px solid var(--ink);border-radius:14px;background:var(--card);text-align:center;padding:10px 6px;box-shadow:0 3px 0 rgba(40,33,26,.14)}
.podium div:nth-child(2){background:#fff0af;padding-top:16px}
.podium .rk{font:1000 11px var(--sans);color:var(--muted)} .podium .nm{font:1000 16px var(--serif);margin:2px 0}
.podium .hs{font:1000 13px var(--sans);color:var(--red)} .podium .hs small{color:var(--muted);font-weight:800}
.chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}
.chip-like{border:2px solid var(--ink);border-radius:999px;background:var(--card);font:900 13px var(--sans);padding:7px 11px;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.chip-like small{color:var(--muted);font-weight:900;font-size:10px}
.chip-like.on{background:#fff0af;outline:2.5px solid var(--banana)}
.chip-like.sent{background:#eafaf4;outline:2.5px solid var(--teal)}
.chip-like[hidden]{display:none}
.hearts-row{display:flex;align-items:center;gap:8px;margin:8px 0 2px;font-size:12px;font-weight:900}
.hearts-row i{width:16px;height:16px;border-radius:50%;background:var(--red);border:2px solid var(--ink);display:inline-block;transition:transform .4s cubic-bezier(.16,1,.3,1)}
.hearts-row i.off{background:var(--card)} .hearts-row i.pop{transform:scale(1.35)}

/* 分享卡出示盒（cards.js） */
#shareBox{position:fixed;inset:0;background:rgba(40,33,26,.62);display:none;align-items:center;justify-content:center;z-index:27;padding:18px;overflow-y:auto}
#shareBox.show{display:flex}
#shareBox .inner{max-width:400px;width:100%;text-align:center}
#shareBox img{width:100%;border:3px solid var(--ink);border-radius:14px;box-shadow:var(--shadow);background:var(--card)}
#shareBox p{color:var(--paper);font-size:12px;font-weight:800;margin-top:10px;line-height:1.8}
#shareBox button,#shareBox a{display:inline-block;margin:8px 4px 0;border:3px solid var(--ink);border-radius:12px;background:var(--banana);padding:9px 14px;font:1000 14px var(--sans);color:var(--ink);text-decoration:none;cursor:pointer}
#shareBox a{background:var(--card)} #shareBox [data-role="close"]{background:var(--card);font-weight:900}
.podium div[data-share]{cursor:pointer} .podium div[data-share] .rk::after{content:" · 拉赞";color:var(--red)}
.season-card{border:3px solid var(--ink);border-radius:18px;background:#fff0af;padding:14px;margin:12px 0;box-shadow:var(--shadow)}
.season-card h3{font-family:var(--serif);font-size:18px;font-weight:1000}
.season-card p{font-size:13px;font-weight:800;color:var(--muted);margin:4px 0 10px;line-height:1.6}
.season-card button{border:3px solid var(--ink);border-radius:12px;background:var(--card);padding:9px 14px;font:1000 14px var(--sans);cursor:pointer;box-shadow:0 3px 0 rgba(40,33,26,.18)}

/* 送心手感 */
.fly-heart{position:fixed;z-index:60;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;background:var(--red);border:2px solid var(--ink);pointer-events:none;transition:transform .42s cubic-bezier(.2,.9,.2,1),opacity .42s}
.chip-like.shake{animation:shake .45s}
@keyframes shake{0%,100%{transform:none}25%{transform:translateX(-4px)}50%{transform:translateX(4px)}75%{transform:translateX(-2px)}}
.hearts-row{position:relative}
.hearts-row.full::after{content:'今日送满';position:absolute;right:0;top:-6px;border:2px solid var(--red);color:var(--red);border-radius:6px;padding:1px 7px;font:1000 11px var(--serif);transform:rotate(-8deg);animation:stampIn .5s cubic-bezier(.16,1,.3,1) both}
/* 对决卡瘦身：预报处一行 */
.call-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0 10px;font-size:12px;font-weight:900;color:var(--muted)}
.call-line b{color:var(--ink)}
.call-line button{border:2px solid var(--teal);border-radius:999px;background:#f2fbf8;color:var(--ink);font:900 12px var(--sans);padding:4px 10px;cursor:pointer}
/* iPad 与桌面：两列，块内标题跟卡一起走 */
.block{break-inside:avoid}
@media (min-width:900px){
  .wrap{max-width:1040px}
  main#polls{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;align-items:start}
  .desk-switch,.strip,#badge{max-width:1040px}
  .desk-switch a,.strip a{font-size:15px}
}

/* 更新记录（与其他作品一致的折叠区） */
.log{margin:18px auto 0;max-width:520px;border-top:2px dashed #d8c9a8;padding-top:10px;font-size:12px;font-weight:800;color:var(--muted);line-height:1.8}
.log summary{cursor:pointer;letter-spacing:.3em;text-align:center;list-style:none;font-weight:900}
.log summary::-webkit-details-marker{display:none}
.log p{margin:4px 0} .log p span{color:var(--red);margin-right:8px;font-variant-numeric:tabular-nums}
