.pub-page[data-v-2aa9577d]{min-height:100vh;background:linear-gradient(180deg,#f0edff,#f3f2fb 30%);padding-bottom:40px}.pub-header[data-v-2aa9577d]{background:linear-gradient(135deg,#5b4af5,#9a7bff);color:#fff;text-align:center;padding:28px 20px 32px;border-radius:0 0 30px 30px}.pub-logo[data-v-2aa9577d]{font-size:13px;opacity:.8;letter-spacing:2px;margin-bottom:6px}.pub-title[data-v-2aa9577d]{font-size:26px;font-weight:900;letter-spacing:1px}.pub-sub[data-v-2aa9577d]{font-size:13px;opacity:.75;margin-top:6px}.pub-list[data-v-2aa9577d]{padding:14px}.pub-card[data-v-2aa9577d]{background:#fff;border-radius:20px;padding:16px;margin-bottom:14px;box-shadow:0 6px 24px #3c32780f}.pub-row-top[data-v-2aa9577d]{display:flex;align-items:center;gap:12px}.pub-rank[data-v-2aa9577d]{width:38px;height:38px;border-radius:12px;background:#eef0fb;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:900;flex:none}.pub-rank.gold[data-v-2aa9577d]{background:linear-gradient(135deg,#ffd24d,#ffb300);font-size:26px}.pub-rank.silver[data-v-2aa9577d]{background:linear-gradient(135deg,#d4d9e6,#a8b2c4);font-size:26px}.pub-rank.bronze[data-v-2aa9577d]{background:linear-gradient(135deg,#e8b88a,#c67e4a);font-size:26px}.pub-avatar[data-v-2aa9577d]{width:48px;height:48px;border-radius:50%;object-fit:cover;background:#e9e9f3;flex:none;border:2px solid #ececf4}.pub-info[data-v-2aa9577d]{flex:1;min-width:0}.pub-name[data-v-2aa9577d]{font-size:16px;font-weight:800;color:#2b2b3a;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pub-username[data-v-2aa9577d]{font-size:12px;color:#8a8aa0;font-weight:400}.pub-badges[data-v-2aa9577d]{margin-top:4px}.badge[data-v-2aa9577d]{display:inline-block;font-size:11px;padding:2px 8px;border-radius:20px;font-weight:600}.badge-ok[data-v-2aa9577d]{background:#e0f7ec;color:#23a468}.badge-warn[data-v-2aa9577d]{background:#fff2e0;color:#c47a20}.pub-score[data-v-2aa9577d]{text-align:center;flex:none}.pub-score-num[data-v-2aa9577d]{font-size:28px;font-weight:900;color:#5b4af5;line-height:1}.pub-score-label[data-v-2aa9577d]{font-size:10px;color:#8a8aa0;margin-top:2px}.pub-progress-row[data-v-2aa9577d]{display:flex;align-items:center;gap:10px;margin-top:12px}.pub-progress-bar[data-v-2aa9577d]{flex:1;height:8px;border-radius:6px;background:#ececf4;overflow:hidden}.pub-progress-bar>i[data-v-2aa9577d]{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#5b4af5,#9a7bff);transition:width .6s ease}.pub-percent[data-v-2aa9577d]{font-size:14px;font-weight:800;color:#5b4af5;min-width:42px;text-align:right}.pub-stages[data-v-2aa9577d]{margin-top:12px;display:flex;flex-direction:column;gap:6px}.pub-stage-item[data-v-2aa9577d]{display:flex;align-items:center;gap:8px;font-size:13px;padding:8px 12px;border-radius:10px;background:#f8f7ff}.pub-stage-item.done[data-v-2aa9577d]{background:#e7fff0}.pub-stage-item.sprint[data-v-2aa9577d]{background:#fff8e6}.stage-dot[data-v-2aa9577d]{font-size:16px}.pub-cats[data-v-2aa9577d]{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.pub-cat-item[data-v-2aa9577d]{display:flex;align-items:center;gap:6px;font-size:12px;padding:4px 10px;border-radius:20px;background:#f3f2fb}.cat-name[data-v-2aa9577d]{color:#2b2b3a;font-weight:600}.cat-pct[data-v-2aa9577d]{color:#8a8aa0}.cat-pct.full[data-v-2aa9577d]{color:#23a468;font-weight:700}.pub-titles[data-v-2aa9577d]{margin-top:10px;display:flex;flex-wrap:wrap;gap:4px}.pub-scripts-toggle[data-v-2aa9577d]{margin-top:12px;font-size:13px;font-weight:700;color:#5b4af5;cursor:pointer;display:flex;align-items:center;gap:4px;padding:6px 0;-webkit-user-select:none;user-select:none}.pub-scripts-grid[data-v-2aa9577d]{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid #ececf4}.pub-script-item[data-v-2aa9577d]{width:64px;text-align:center}.pub-script-cover[data-v-2aa9577d]{width:64px;height:84px;border-radius:8px;object-fit:cover;background:#e9e9f3}.pub-script-name[data-v-2aa9577d]{font-size:10px;color:#8a8aa0;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pub-footer[data-v-2aa9577d]{text-align:center;padding:24px 16px;font-size:12px;color:#8a8aa0;line-height:1.8}.skeleton[data-v-2aa9577d]{background:linear-gradient(90deg,#eee,#f5f5f5,#eee);background-size:200% 100%;animation:sk-2aa9577d 1.2s infinite;border-radius:20px}@keyframes sk-2aa9577d{0%{background-position:200% 0}to{background-position:-200% 0}}:root{--brand:#6d5efc;--brand2:#9a7bff;--accent:#ff8a5c;--gold:#ffb300;--bg:#f3f2fb;--card:#ffffff;--ink:#2b2b3a;--muted:#8a8aa0;--line:#ececf4;--ok:#23c483;--warn:#ff9f43;--bad:#ff5e6c}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif}#app{max-width:520px;margin:0 auto;min-height:100vh;position:relative;padding-bottom:72px}a{color:inherit;text-decoration:none}.page{padding:16px}.h-title{font-size:20px;font-weight:800;margin:6px 0 14px}.muted{color:var(--muted)}.card{background:var(--card);border-radius:18px;padding:16px;box-shadow:0 6px 22px #3c327812;margin-bottom:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:14px;padding:12px 18px;font-size:15px;font-weight:700;cursor:pointer;background:var(--brand);color:#fff;transition:.15s}.btn:active{transform:scale(.97)}.btn.block{width:100%}.btn.ghost{background:#eef0fb;color:var(--brand)}.btn.warn{background:var(--warn)}.btn.bad{background:var(--bad)}.btn.gold{background:linear-gradient(135deg,#ffd24d,#ff9d2e);color:#7a4b00}.btn:disabled{opacity:.5}.input{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;font-size:15px;background:#fafaff;margin-bottom:12px}.input:focus{outline:none;border-color:var(--brand)}.row{display:flex;gap:10px}.center{display:flex;align-items:center;justify-content:center}.grad-header{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;padding:22px 18px 26px;border-radius:0 0 26px 26px}.brand-hi{font-size:22px;font-weight:800}.brand-sub{opacity:.85;font-size:13px;margin-top:4px}.ring{--p:0;width:120px;height:120px;border-radius:50%;background:conic-gradient(#fff calc(var(--p)*1%),#ffffff40 0);display:flex;align-items:center;justify-content:center}.ring .inner{width:96px;height:96px;border-radius:50%;background:var(--brand);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff}.script-card{display:flex;gap:12px;align-items:center}.cover{width:56px;height:74px;border-radius:10px;object-fit:cover;background:#e9e9f3;flex:none}.tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:20px;background:#eef0fb;color:var(--brand)}.state-passed{color:var(--ok);font-weight:700}.state-frozen{color:var(--bad);font-weight:700}.tabbar{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:520px;background:#fff;border-top:1px solid var(--line);display:flex;justify-content:space-around;padding:8px 0 calc(8px + env(safe-area-inset-bottom));z-index:50}.tabbar a{display:flex;flex-direction:column;align-items:center;font-size:11px;color:var(--muted);gap:2px}.tabbar a.on{color:var(--brand)}.tabbar .ic{font-size:20px}.stage{border-radius:16px;padding:14px;margin-bottom:12px;border:1.5px solid var(--line);background:#fff}.stage.cur{border-color:var(--brand);box-shadow:0 6px 20px #6d5efc29}.stage.done{border-color:var(--ok)}.stage.locked{opacity:.7}.cond{display:flex;align-items:center;gap:8px;font-size:13px;margin:5px 0}.dot{width:16px;height:16px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-size:10px;color:#fff}.dot.y{background:var(--ok)}.dot.n{background:#cfcfe0}.title-badge{display:inline-block;background:linear-gradient(135deg,#fff2cc,#ffe08a);color:#8a5a00;font-weight:700;font-size:12px;padding:4px 12px;border-radius:20px;margin:3px;border:1px solid #ffd76a}.gift-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#141028b8;z-index:100;display:flex;align-items:center;justify-content:center;flex-direction:column;animation:fade .3s}@keyframes fade{0%{opacity:0}to{opacity:1}}.gift{width:160px;height:160px;position:relative;cursor:pointer}.gift .box{position:absolute;bottom:0;width:160px;height:120px;background:linear-gradient(135deg,#ff7a59,#ff5e8a);border-radius:14px}.gift .lid{position:absolute;top:8px;width:172px;left:-6px;height:40px;background:linear-gradient(135deg,#ffd24d,#ff9d2e);border-radius:12px;transform-origin:center;transition:.5s}.gift .ribbon{position:absolute;left:72px;width:16px;height:120px;bottom:0;background:#ffd76a;z-index:2}.gift.open .lid{transform:translateY(-90px) rotate(-18deg);opacity:0}.gift.open .box{animation:pop .5s}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}.reward-pop{margin-top:24px;text-align:center;color:#fff;animation:rise .6s .25s both}@keyframes rise{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}.reward-name{font-size:24px;font-weight:900;color:#ffd76a}.reward-desc{font-size:13px;opacity:.85;margin-top:8px;max-width:260px}.spark{position:absolute;width:8px;height:8px;border-radius:50%;background:#ffe08a;opacity:0}.gift.open .spark{animation:spark .7s ease-out forwards}@keyframes spark{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.3)}}.opt{border:1.5px solid var(--line);border-radius:14px;padding:14px;margin-bottom:10px;background:#fff;cursor:pointer;transition:.12s}.opt.sel{border-color:var(--brand);background:#f0effe}.timer{font-weight:800;color:var(--bad)}.progressbar{height:8px;border-radius:6px;background:#e9e9f6;overflow:hidden}.progressbar>i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),var(--brand2))}.flex-between{display:flex;justify-content:space-between;align-items:center}.notif{background:#fff6e9;border:1px solid #ffe0b3;color:#a05a00;border-radius:12px;padding:10px 12px;margin-bottom:10px;font-size:13px}.empty{text-align:center;color:var(--muted);padding:40px 0}.skeleton{background:linear-gradient(90deg,#eee,#f5f5f5,#eee);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:10px}@keyframes sk{0%{background-position:200% 0}to{background-position:-200% 0}}
