/* ================= 基础 ================= */
:root{
  --page1:#fff3f7;
  --page2:#ffe6ef;
  --paper:#ffffff;
  --ink:#1c1a22;
  --ink2:#4a4552;
  --muted:#8b8494;
  --dim:#a9a2b1;
  --line:#f7dbe5;
  --line2:#f2c9d8;
  --green:#0f9f6e;
  --green2:#3ecf9a;
  --green-ink:#0f8a5f;
  --green-soft:#e8f8f1;
  --green-line:#8fdcc0;
  --red:#e11d48;
  --red-soft:#fff5f7;
  --shadow:0 6px 22px rgba(184,120,146,.13);
  --shadow-lg:0 14px 40px rgba(184,120,146,.20);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
[hidden]{display:none !important}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:linear-gradient(180deg,var(--page1),var(--page2) 60%,#ffe0eb);
  background-attachment:fixed;
  color:var(--ink);font-size:15px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
img{max-width:100%;display:block}
::selection{background:#ffd3e2}

/* ================= 首页 ================= */
.hd{
  position:sticky;top:0;z-index:60;
  background:rgba(255,255,255,.8);
  backdrop-filter:saturate(180%) blur(16px);
  -webkit-backdrop-filter:saturate(180%) blur(16px);
  border-bottom:1px solid var(--line);
}
.hd-in{max-width:1080px;margin:0 auto;padding:12px 18px;display:flex;align-items:center;gap:10px}
.logo{display:flex;align-items:center;gap:9px;font-size:16.5px;font-weight:700;letter-spacing:-.4px}
.logo b{
  width:26px;height:26px;border-radius:9px;flex:0 0 auto;
  background:linear-gradient(135deg,var(--green2),var(--green));color:#fff;
  display:grid;place-items:center;font-size:14px;font-weight:800;
  box-shadow:0 4px 12px rgba(15,159,110,.28);
}
.logo .sub{
  font-size:10.5px;color:var(--dim);font-weight:400;letter-spacing:.2px;margin-left:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:44vw;
}
.hd-r{margin-left:auto;display:flex;align-items:center;gap:10px}
.hd-live{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);white-space:nowrap}
@media(max-width:420px){.hd-live span{display:none}}
.dot{
  width:6px;height:6px;border-radius:50%;background:var(--green);
  box-shadow:0 0 0 3px rgba(15,159,110,.14);flex:0 0 auto;
  animation:pulse 2s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}

.tick{max-width:1080px;margin:0 auto;padding:0 18px;border-bottom:1px solid rgba(247,219,229,.9)}
.tick-in{
  height:31px;display:flex;align-items:center;overflow:hidden;position:relative;
  -webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);
  mask-image:linear-gradient(90deg,#000 88%,transparent);
}
.tick-track{
  display:flex;gap:26px;white-space:nowrap;will-change:transform;
  animation:marq 34s linear infinite;font-size:11px;color:var(--dim);
}
.tick-track b{color:var(--green-ink);font-weight:600}
@keyframes marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}

.hero{max-width:1080px;margin:0 auto;padding:30px 18px 6px}
.eyebrow{
  display:flex;align-items:center;gap:7px;
  font-size:11px;color:var(--muted);letter-spacing:1.2px;margin-bottom:12px;
}
.eyebrow::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--line2),transparent)}
.hero h1{margin:0 0 11px;font-size:31px;line-height:1.18;letter-spacing:-1.1px;font-weight:800}
.hero h1 em{
  font-style:normal;
  background:linear-gradient(100deg,var(--green),#38c98f 80%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero p{margin:0 0 18px;font-size:13px;color:var(--muted);line-height:1.7;max-width:30em}
@media(min-width:700px){
  .hero{padding:46px 18px 10px}
  .hero h1{font-size:42px;letter-spacing:-1.6px;max-width:14em}
  .hero p{font-size:14px}
}

.search-box{
  display:flex;align-items:center;gap:10px;
  background:#fff;border:1.5px solid var(--line);border-radius:999px;
  padding:0 16px;height:48px;transition:.2s;box-shadow:var(--shadow);
}
.search-box:focus-within{border-color:var(--green-line);box-shadow:0 0 0 4px rgba(62,207,154,.14)}
.search-box svg{flex:0 0 auto;color:var(--dim)}
.search-box input{border:0;outline:0;background:transparent;flex:1;min-width:0;font-size:14.5px;color:var(--ink);height:100%}
.search-box input::placeholder{color:var(--dim)}
.search-box input::-webkit-search-cancel-button{-webkit-appearance:none}

.stats{display:flex;align-items:center;gap:20px;margin-top:16px;font-size:11.5px;color:var(--muted)}
.stats b{color:var(--ink);font-size:15px;font-weight:700;margin-right:4px;letter-spacing:-.3px}
.stats s{width:1px;height:11px;background:var(--line2);text-decoration:none;display:block}

.tabs{
  max-width:1080px;margin:0 auto;padding:20px 18px 0;
  display:flex;gap:20px;overflow-x:auto;scrollbar-width:none;
  border-bottom:1px solid var(--line);
  -webkit-mask-image:linear-gradient(90deg,#000 92%,transparent);
  mask-image:linear-gradient(90deg,#000 92%,transparent);
}
.tabs::-webkit-scrollbar{display:none}
.tab{
  flex:0 0 auto;border:0;background:transparent;cursor:pointer;
  padding:4px 0 13px;font-size:13.5px;color:var(--muted);font-weight:500;
  position:relative;transition:color .18s;white-space:nowrap;
}
.tab:hover{color:var(--ink2)}
.tab .n{font-size:10.5px;color:var(--dim);margin-left:3px;font-weight:400}
.tab.on{color:var(--ink);font-weight:700}
.tab.on::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--green);border-radius:3px}

.sec-h{max-width:1080px;margin:0 auto;padding:22px 18px 12px;display:flex;align-items:baseline;gap:8px}
.sec-h h2{margin:0;font-size:15.5px;letter-spacing:-.3px;font-weight:700}
.sec-h em{font-style:normal;font-size:11.5px;color:var(--dim)}

.grid{
  max-width:1080px;margin:0 auto;padding:0 18px 34px;
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;
}
@media(min-width:640px){.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}}
@media(min-width:980px){.grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}}

.card{
  background:var(--paper);border:1.5px solid var(--line);border-radius:18px;
  overflow:hidden;transition:transform .2s, box-shadow .2s, border-color .2s;
  display:flex;flex-direction:column;box-shadow:0 2px 8px rgba(184,120,146,.07);
}
.card:hover{transform:translateY(-3px);border-color:var(--green-line);box-shadow:var(--shadow-lg)}
.card:active{transform:translateY(-1px)}

.cov{
  position:relative;aspect-ratio:16/10;overflow:hidden;
  background:
    radial-gradient(120% 100% at 78% 18%, var(--glow), transparent 65%),
    linear-gradient(155deg, var(--g1), var(--g2));
  display:grid;place-items:center;
}
.cov-em{
  position:relative;z-index:1;width:54px;height:54px;border-radius:17px;font-size:27px;
  display:grid;place-items:center;line-height:1;background:#fff;
  box-shadow:0 8px 20px rgba(28,26,34,.12), 0 1px 2px rgba(28,26,34,.06);
}
@media(min-width:640px){.cov-em{width:58px;height:58px;font-size:30px}}
.cov-idx{
  position:absolute;right:7px;bottom:-5px;z-index:0;
  font-size:32px;font-weight:800;letter-spacing:-1.5px;line-height:1;
  color:rgba(28,26,34,.06);font-variant-numeric:tabular-nums;
}
.cov-hot{position:absolute;top:9px;left:10px;z-index:2;font-size:9.5px;font-weight:800;letter-spacing:1px;color:var(--red)}
.cov-hot::before{content:"● ";font-size:7px;vertical-align:1px}

[data-cat="ai"] .cov,[data-cat="ai"] .rthumb      {--glow:#b79cff99;--g1:#ece4ff;--g2:#dccfff}
[data-cat="gongkao"] .cov,[data-cat="gongkao"] .rthumb{--glow:#7fb3fb99;--g1:#e6f0ff;--g2:#d3e6ff}
[data-cat="chigua"] .cov,[data-cat="chigua"] .rthumb  {--glow:#fb8fa399;--g1:#ffe9ee;--g2:#ffd8e2}
[data-cat="game"] .cov,[data-cat="game"] .rthumb      {--glow:#4ede9e99;--g1:#e5f8f0;--g2:#d1f2e3}

.cbody{padding:10px 11px 11px;display:flex;flex-direction:column;flex:1}
.cbody h3{
  margin:0 0 9px;font-size:13px;line-height:1.42;font-weight:600;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  min-height:37px;
}
.cmeta{margin-top:auto;display:flex;align-items:center;gap:7px;font-size:10.5px;color:var(--muted)}
.cmeta .sep{width:2px;height:2px;border-radius:50%;background:var(--line2)}
.cgo{margin-left:auto;color:var(--green-ink);font-size:11px;font-weight:800;display:flex;align-items:center;gap:2px;white-space:nowrap}
.cgo::after{content:"›";font-size:13px;line-height:1;transform:translateY(-.5px)}

/* 少量资源时：横向大卡 */
.csub{display:none}
.grid.few{grid-template-columns:1fr;gap:10px}
@media(min-width:700px){.grid.few{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}}
.grid.few .card{flex-direction:row;min-height:104px}
.grid.few .cov{width:112px;flex:0 0 112px;aspect-ratio:auto}
.grid.few .cov-em{width:46px;height:46px;border-radius:15px;font-size:23px}
.grid.few .cov-idx{font-size:26px;right:5px;bottom:-3px}
.grid.few .cov-hot{top:7px;left:7px;font-size:9px}
.grid.few .cbody{padding:12px 13px;justify-content:center}
.grid.few .cbody h3{min-height:0;margin-bottom:5px;font-size:14.5px;line-height:1.35}
.grid.few .csub{
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
  margin:0 0 9px;font-size:11.5px;color:var(--muted);line-height:1.5;
}
.grid.few .cmeta{margin-top:0}

.empty{max-width:1080px;margin:0 auto;padding:70px 18px;text-align:center;color:var(--dim);font-size:13px}
.empty div{font-size:34px;margin-bottom:12px;opacity:.25}

.ft{max-width:1080px;margin:0 auto;padding:8px 18px 46px;text-align:center;color:var(--dim);font-size:11px;line-height:2}
.ft .line{height:1px;background:var(--line);margin-bottom:18px}
.ft b{color:var(--muted);font-weight:600}

.fab{
  position:fixed;right:16px;bottom:20px;z-index:55;
  display:flex;align-items:center;gap:7px;
  background:linear-gradient(135deg,var(--green2),var(--green));color:#fff;
  font-size:12.5px;font-weight:700;padding:11px 16px;border-radius:999px;
  box-shadow:0 10px 26px rgba(15,159,110,.32);transition:.18s;
}
.fab:active{transform:scale(.96)}

/* ================= 任务页 ================= */
body.task-body{background:linear-gradient(180deg,#fff3f7,#ffe2ec 55%,#ffd9e6);background-attachment:fixed}
.wrap{max-width:560px;margin:0 auto;padding:14px 14px 44px}

.notice{
  background:#0d3b2b;color:#fff;border-radius:18px;
  padding:13px 16px;text-align:center;font-size:13.5px;letter-spacing:.3px;
  box-shadow:0 8px 22px rgba(13,59,43,.22);
}
.notice b{color:#6ee7b7;font-weight:700}

.back-pill{
  display:inline-flex;align-items:center;gap:6px;margin:12px 0 14px;
  background:#fff;border:1.5px solid var(--green-line);color:var(--green-ink);
  border-radius:999px;padding:9px 16px;font-size:13.5px;font-weight:600;
  box-shadow:0 2px 8px rgba(15,159,110,.10);
}
.back-pill:active{transform:scale(.97)}

.res-card{
  display:flex;align-items:center;gap:14px;
  background:#fff;border:2px solid var(--green-line);border-radius:24px;
  padding:14px;box-shadow:var(--shadow);
}
.rthumb{
  width:76px;height:76px;border-radius:18px;flex:0 0 auto;
  display:grid;place-items:center;font-size:32px;
  background:
    radial-gradient(110% 100% at 75% 15%, var(--glow), transparent 65%),
    linear-gradient(155deg,var(--g1),var(--g2));
}
.rinfo{min-width:0;flex:1}
.rinfo h1{margin:0 0 8px;font-size:19px;line-height:1.3;letter-spacing:-.4px;font-weight:800}
.rmeta{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--muted)}
.rmeta .st{color:#f59e0b;letter-spacing:-.5px;font-size:12.5px}
.rmeta .rt{color:#f59e0b;font-weight:700}

.resdesc{margin:12px 4px 0;font-size:12.5px;line-height:1.8;color:var(--muted)}

.intro{
  margin-top:14px;border-radius:24px;padding:2px;
  background:linear-gradient(120deg,#ffd3e0,#ffadc6 45%,#9ee6c9 100%);
  box-shadow:0 8px 24px rgba(225,29,72,.10);
}
.intro-in{background:#fff8fa;border-radius:22px;padding:20px 14px;text-align:center}
.intro-in h2{margin:0;color:var(--red);font-size:21px;line-height:1.45;font-weight:800;letter-spacing:-.4px}
.intro-in p{margin:10px 0 0;font-size:12.5px;color:var(--muted);line-height:1.8}

.step-card{
  margin-top:14px;background:#fff;border:2px solid #ffe0ea;border-radius:24px;
  padding:16px;box-shadow:var(--shadow);
}
.step-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.step-badge{
  background:var(--green-soft);color:var(--green-ink);
  border:1.5px solid #a9e6cd;border-radius:999px;
  padding:5px 13px;font-size:13px;font-weight:800;white-space:nowrap;
}
.step-head strong{font-size:17.5px;font-weight:800;letter-spacing:-.3px}
.step-desc{margin:0 0 14px;font-size:13.5px;color:var(--ink2);line-height:1.85}

.sub-label{color:var(--red);font-weight:800;font-size:13.5px;margin:2px 0 9px;padding-left:8px;border-left:3px solid var(--red)}
.poster-box{border:1.5px solid var(--line);border-radius:18px;padding:9px;background:#fdf6f9}
.poster-box img{width:100%;border-radius:12px;display:block;background:#fff}
.poster-hint{margin:12px 0;text-align:center;font-size:12.5px;color:var(--muted)}

.save-btn{
  display:flex;align-items:center;justify-content:center;gap:7px;
  border:2px solid var(--green-line);color:var(--green-ink);background:#fff;
  border-radius:999px;padding:13px;font-size:14.5px;font-weight:800;
  box-shadow:0 4px 14px rgba(15,159,110,.10);
}
.save-btn:active{transform:scale(.985);background:#f2fcf8}

.copy-btn{
  display:block;width:100%;margin-top:10px;border:0;background:#f4f1f5;color:var(--ink2);
  border-radius:999px;padding:12px;font-size:13.5px;font-weight:700;
}
.copy-btn:active{background:#ebe6ee}

.plats{display:flex;justify-content:center;gap:32px;margin:20px 0 14px}
.plat{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:13px;color:var(--ink2);font-weight:600}
.plat i{
  width:54px;height:54px;border-radius:15px;display:grid;place-items:center;
  color:#fff;font-size:22px;font-weight:800;font-style:normal;
  box-shadow:0 8px 18px rgba(28,26,34,.18);
}
.plat:active{transform:scale(.95)}
.plat.dy i{background:#12141a}
.plat.xhs i{background:#ff2442}

.tip-box{
  background:var(--red-soft);border:1.5px solid #ffdce6;border-radius:18px;
  padding:14px 12px;text-align:center;font-size:13px;color:var(--muted);line-height:2;
}
.tip-box em{display:block;font-style:normal;color:var(--red);font-weight:800;font-size:14.5px}

.example{
  margin-top:12px;background:#fff;border:1px solid #eef0f3;border-radius:16px;
  padding:12px;box-shadow:0 2px 10px rgba(28,26,34,.05);
}
.ex-top{display:flex;gap:14px;font-size:11.5px;color:#a9a2b1;padding-bottom:10px;border-bottom:1px solid #f4f5f7}
.ex-top span:first-child{font-weight:700;color:#4a4552}
.ex-row{display:flex;gap:9px;padding-top:11px}
.ex-ava{width:32px;height:32px;border-radius:50%;background:#f1f3f6;display:grid;place-items:center;font-size:16px;flex:0 0 auto}
.ex-body{flex:1;min-width:0}
.ex-name{font-size:12px;color:#8b8494;margin-bottom:5px}
.ex-text{
  display:inline-block;background:#12141a;color:#ffd76a;
  font-size:12.5px;font-weight:700;padding:3px 8px;border-radius:4px;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ex-time{font-size:11px;color:#a9a2b1;margin-top:6px;display:flex;gap:12px;align-items:center}
.ex-time .like{color:#ff5a7a}
.ex-note{
  margin-top:10px;text-align:center;font-size:12.5px;color:#e11d48;font-weight:800;
  background:#fff5f7;border-radius:10px;padding:7px;
}

.submit{
  width:100%;border:0;border-radius:999px;padding:18px;
  background:linear-gradient(135deg,var(--green2),var(--green));
  color:#fff;font-size:17px;font-weight:800;letter-spacing:.3px;
  box-shadow:0 12px 26px rgba(15,159,110,.30);
  display:flex;align-items:center;justify-content:center;gap:8px;
}
.submit:active{transform:scale(.99)}
.submit:disabled{background:#e9e6ec;color:#a9a2b1;box-shadow:none}

.up{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:9px}
.slot{
  height:66px;border:1.5px dashed #ddd5e0;border-radius:14px;
  display:grid;place-items:center;background:#fdfbfc;cursor:pointer;
  position:relative;overflow:hidden;transition:.18s;
}
.slot:hover{border-color:var(--green-line);background:#f7fdfa}
.slot.filled{border-style:solid;border-color:var(--green-line);background:#f2fcf8}
.slot img{width:100%;height:100%;object-fit:cover}
.slot .ph{text-align:center;font-size:10.5px;color:var(--dim);line-height:1.5}
.slot .ph b{display:block;font-size:17px;font-weight:400;color:#e2a7bd;line-height:1.2}
.slot .rm{
  position:absolute;top:3px;right:3px;width:18px;height:18px;border-radius:50%;
  background:rgba(28,26,34,.6);color:#fff;border:0;font-size:12px;line-height:1;
  display:grid;place-items:center;cursor:pointer;z-index:2;
}

.up-hint{display:flex;align-items:center;justify-content:space-between;font-size:11.5px;color:var(--dim);margin:0 2px 12px}
.up-hint b{color:var(--green-ink)}

.trust{display:flex;justify-content:center;gap:16px;margin-top:14px;font-size:11px;color:var(--dim);flex-wrap:wrap}

/* ================= 检测弹层 ================= */
.mask{
  position:fixed;inset:0;z-index:100;display:none;
  background:rgba(28,26,34,.42);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
}
.mask.on{display:grid;place-items:center;animation:fade .2s both}
@keyframes fade{from{opacity:0}to{opacity:1}}
.dlg{
  width:min(320px,86vw);background:#fff;border-radius:24px;
  padding:30px 22px 22px;text-align:center;
  box-shadow:0 30px 70px rgba(28,26,34,.28);
  animation:pop .26s cubic-bezier(.2,.8,.3,1.15) both;
}
@keyframes pop{from{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}
.ring{
  width:56px;height:56px;margin:0 auto 18px;border-radius:50%;
  border:4px solid #e6f8f1;border-top-color:var(--green);
  animation:spin .8s linear infinite;
}
.ring.done{animation:none;border-color:#bff0dd;display:grid;place-items:center;background:var(--green-soft)}
.ring.done::after{content:"✓";color:var(--green);font-size:25px;font-weight:800;line-height:1}
@keyframes spin{to{transform:rotate(360deg)}}
.dlg h3{margin:0 0 8px;font-size:17px;letter-spacing:-.3px;color:var(--ink);font-weight:800}
.dlg p{margin:0;font-size:12.5px;color:var(--muted);line-height:1.7;min-height:20px}
.pbar{height:6px;border-radius:99px;background:#f2eff3;margin:16px 0 0;overflow:hidden}
.pbar i{
  display:block;height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,var(--green2),var(--green));
  transition:width .4s ease;
}
.plog{
  margin-top:14px;font-size:11px;color:var(--dim);text-align:left;
  background:#faf8fb;border-radius:12px;padding:10px 12px;line-height:1.95;
  min-height:72px;overflow:hidden;
}
.plog div{display:flex;gap:6px}
.plog div::before{content:"·";color:#d3cdd8}
.plog div.ok::before{content:"✓";color:var(--green)}
.plog div.run::before{content:"›";color:var(--green)}

.toast{
  position:fixed;left:50%;bottom:15%;transform:translate(-50%,10px);
  background:rgba(28,26,34,.92);color:#fff;font-size:12.5px;font-weight:500;
  padding:10px 18px;border-radius:999px;z-index:200;
  opacity:0;pointer-events:none;transition:.24s;white-space:nowrap;
  box-shadow:0 12px 34px rgba(28,26,34,.32);
}
.toast.on{opacity:1;transform:translate(-50%,0)}
