﻿/* 学习计划平台 · 青蓝主题（由本机 ComfyUI / Z-Image Turbo 生成的背景图驱动） */
:root{
  --bg:#000206;
  --panel:rgba(6,12,20,.62);
  --panel2:rgba(9,18,30,.82);
  --line:rgba(96,165,250,.16);
  --line2:rgba(96,165,250,.34);
  --ink:#d9eaff;
  --dim:#8fb3d9;
  --dim2:#5c7fa6;
  --accent:#38bdf8;
  --accent2:#2563eb;
  --ok:#34d399;
  --glow:0 0 0 1px rgba(56,189,248,.22), 0 18px 44px -26px rgba(37,99,235,.55);
}

html{background:var(--bg)}
body{
  background-color:var(--bg);
  background-image:
    linear-gradient(180deg, rgba(0,2,6,.82) 0%, rgba(0,2,6,.94) 36%, #000206 74%),
    url("hero.png?v=5");
  background-size:cover;
  background-position:center top;
  background-repeat:no-repeat;
  background-attachment:fixed;
  color:var(--ink);
}
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(900px 420px at 12% -8%, rgba(56,189,248,.10), transparent 70%),
    radial-gradient(760px 380px at 92% 4%, rgba(37,99,235,.12), transparent 72%);
}
.wrap{position:relative;z-index:1}

.eyebrow{color:var(--accent)!important;letter-spacing:.2em;font-weight:700}
h1,.card h2,a.entry h2{letter-spacing:-.02em}
h1{
  background:linear-gradient(92deg,#eaf4ff 6%,#8fc8ff 48%,#3b82f6 94%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  text-shadow:0 0 46px rgba(59,130,246,.26);
}
.lead{color:var(--dim)}

/* —— 入口页 —— */
a.entry{
  background:linear-gradient(180deg,rgba(12,30,44,.78),rgba(8,18,28,.72));
  border:1px solid var(--line);
  border-radius:20px;
  backdrop-filter:blur(10px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 20px 50px -34px rgba(0,0,0,.9);
  position:relative;overflow:hidden;
}
a.entry::before{
  content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;
  background:linear-gradient(140deg,rgba(34,211,238,.55),rgba(59,130,246,.18) 42%,transparent 72%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;opacity:.55;transition:.2s;
}
a.entry:hover{
  border-color:var(--line2);transform:translateY(-3px);
  background:linear-gradient(180deg,rgba(16,40,56,.92),rgba(9,22,33,.82));
  box-shadow:var(--glow),0 26px 60px -34px rgba(0,0,0,.95);
}
a.entry:hover::before{opacity:1}
a.entry::after{
  content:"";position:absolute;left:0;right:0;top:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(34,211,238,.7),transparent);
  opacity:.5;
}
.entry .ico{
  background:linear-gradient(150deg,rgba(34,211,238,.22),rgba(59,130,246,.16))!important;
  border:1px solid rgba(34,211,238,.4)!important;
  color:#bff4ff!important;
  box-shadow:0 0 26px -6px rgba(34,211,238,.55);
}
.entry p{color:var(--dim)!important}
.entry .go{color:var(--accent)!important;text-shadow:0 0 22px rgba(34,211,238,.45)}
.foot{color:var(--dim2)!important;border-top:1px solid var(--line)!important}

/* —— 列表页 —— */
.searchbox,.toolbar input,.toolbar{
  border-color:var(--line)!important;
}
input[type="search"],.searchbox input{
  background:rgba(6,16,26,.72)!important;color:var(--ink)!important;
  border-color:var(--line)!important;
}
input[type="search"]:focus,.searchbox input:focus{
  border-color:var(--accent)!important;box-shadow:0 0 0 3px rgba(34,211,238,.16)!important;outline:none;
}
.chip{
  background:rgba(8,22,32,.72)!important;border:1px solid var(--line)!important;color:var(--dim)!important;
  border-radius:999px!important;transition:.16s;
}
.chip:hover{border-color:var(--line2)!important;color:var(--ink)!important}

.card{
  background:linear-gradient(180deg,rgba(12,30,44,.80),rgba(8,18,28,.74))!important;
  border:1px solid var(--line)!important;border-radius:18px!important;
  backdrop-filter:blur(10px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 18px 44px -32px rgba(0,0,0,.95);
}
.card:hover{
  border-color:var(--line2)!important;background:linear-gradient(180deg,rgba(16,40,56,.94),rgba(9,22,33,.84))!important;
  box-shadow:var(--glow)!important;
}
.card .badge{
  background:rgba(34,211,238,.12)!important;border:1px solid rgba(34,211,238,.3)!important;color:#9fe9f8!important;
}
.card .sub{color:var(--dim)!important}
.card .meta,.card .nums{color:var(--dim)!important}
.bar{background:rgba(255,255,255,.06)!important;border-radius:999px!important;overflow:hidden}
.bar i{background:linear-gradient(90deg,var(--accent),var(--accent2))!important}
a.open,.btn,.card a.open{
  background:linear-gradient(135deg,var(--accent),var(--accent2))!important;
  color:#03161d!important;font-weight:700;border:none!important;border-radius:999px!important;
  box-shadow:0 10px 26px -14px rgba(34,211,238,.85);
}
a.open:hover{filter:brightness(1.08)}

/* —— 详情页 —— */
.nav a,.nav span{
  background:rgba(8,22,32,.72)!important;border:1px solid var(--line)!important;
  color:var(--dim)!important;border-radius:999px!important;transition:.16s;
}
.nav a:hover{border-color:var(--accent)!important;color:var(--ink)!important}
.rule,.note,.tip{border-left-color:var(--accent)!important}
.daybox,.w,.week,.wcard{
  border-color:var(--line)!important;
  background:linear-gradient(180deg,rgba(12,30,44,.62),rgba(8,18,28,.52))!important;
  border-radius:14px!important;
}
.stat b,.nums b{color:var(--accent)!important}
h2,h3{color:#eafaff}
em{color:var(--accent)!important;font-style:normal}

::selection{background:rgba(34,211,238,.28)}

/* ========== 开场动画：只用 transform / opacity，全部走合成层（保证 60fps） ========== */

/* 1. 整页淡入（删掉了原来的底图 background-position 漂移：那是逐帧重绘整张星空，必卡） */
body{animation:fadeIn .65s ease-out both}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* 2. 星点层：八颗呼吸星，各自错相，让画面"活"起来 */
body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background-image:
    radial-gradient(1.4px 1.4px at 12% 18%,rgba(255,255,255,.92),transparent 60%),
    radial-gradient(1.2px 1.2px at 27% 63%,rgba(180,240,255,.85),transparent 60%),
    radial-gradient(1.7px 1.7px at 44% 26%,rgba(255,255,255,.78),transparent 60%),
    radial-gradient(1.2px 1.2px at 61% 74%,rgba(190,245,255,.82),transparent 60%),
    radial-gradient(1.9px 1.9px at 77% 37%,rgba(255,255,255,.72),transparent 60%),
    radial-gradient(1.3px 1.3px at 88% 67%,rgba(170,230,255,.82),transparent 60%),
    radial-gradient(1.2px 1.2px at 8% 83%,rgba(255,255,255,.62),transparent 60%),
    radial-gradient(1.5px 1.5px at 71% 11%,rgba(255,255,255,.68),transparent 60%);
  animation:twinkle 7s ease-in-out infinite alternate;will-change:opacity;
}
@keyframes twinkle{from{opacity:.35}to{opacity:.92}}

/* 3. 顶部光晕：缓慢呼吸 */
body::before{animation:glowPulse 10s ease-in-out infinite;will-change:opacity}
@keyframes glowPulse{0%,100%{opacity:.5}50%{opacity:.85}}

/* 4. 标题：从虚焦拉清 + 之后极慢流光扫过 */
.wrap>h1{
  background-size:240% 100%!important;
  animation:titleIn .9s cubic-bezier(.16,1,.3,1) .05s both, sheen 14s linear 2.4s infinite;
  will-change:transform,opacity;
}
@keyframes titleIn{
  from{opacity:0;transform:translate3d(0,14px,0) scale(.99)}
  to{opacity:1;transform:none}
}
@keyframes sheen{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}

/* 5. 眉标小灯点：脉冲 */
.eyebrow{position:relative;padding-left:16px}
.eyebrow::before{
  content:"";position:absolute;left:0;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 10px 2px rgba(34,211,238,.75);
  animation:dotPulse 2.6s ease-in-out infinite;
}
@keyframes dotPulse{0%,100%{opacity:.45;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}

/* 6. 正文段落：模糊淡入 + 上浮，逐条错开 */

@keyframes riseIn{from{opacity:0;transform:translate3d(0,16px,0)}to{opacity:1;transform:none}}
.wrap>*:nth-child(1){animation-delay:.06s}
.wrap>*:nth-child(2){animation-delay:.14s}
.wrap>*:nth-child(3){animation-delay:.24s}
.wrap>*:nth-child(4){animation-delay:.34s}
.wrap>*:nth-child(5){animation-delay:.44s}

/* 7. 入口卡：3D 透视翻起落位（父层给 perspective） */
.entries{perspective:1400px}
.entries a.entry{transform-origin:50% 100%;animation:cardIn .8s cubic-bezier(.16,1,.3,1) both}
@keyframes cardIn{
  from{opacity:0;transform:translate3d(0,22px,0) scale(.985)}
  to{opacity:1;transform:none}
}
.entries a.entry:nth-child(1){animation-delay:.42s}
.entries a.entry:nth-child(2){animation-delay:.56s}

/* 8. 入口卡图标：外扩光环 + 内部呼吸 */
.entry .ico{position:relative}
.entry .ico::after{
  content:"";position:absolute;inset:-1px;border-radius:inherit;
  border:1px solid rgba(34,211,238,.55);
  animation:ringOut 3.6s ease-out infinite;will-change:transform,opacity;
}
@keyframes ringOut{
  0%{transform:scale(1);opacity:.6}
  70%{transform:scale(1.42);opacity:0}
  100%{transform:scale(1.42);opacity:0}
}

/* 9. 列表卡：依次淡入（最多 8 张） */
.cards .card{animation:cardIn .9s cubic-bezier(.16,1,.3,1) both}









/* 10. 详情页周卡：同样错峰（最多 10 块） */
.week,.w,.daybox,.wcard{animation:riseIn .8s cubic-bezier(.16,1,.3,1) both}







@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}


/* CLICK-ANYWHERE + 按钮可见 */
.cards .card{cursor:pointer}
.cards .card:focus-visible{outline:2px solid #38bdf8;outline-offset:3px}
a.open,.btn,.card a.open,.card .open,button.btn{
  background:linear-gradient(135deg,#38bdf8,#1d4ed8)!important;
  color:#02121c!important;font-weight:700!important;border:0!important;
  border-radius:999px!important;text-shadow:none!important;
  box-shadow:0 10px 26px -12px rgba(56,189,248,.75)!important;
}
a.open:hover,.btn:hover,.card a.open:hover{filter:brightness(1.12)}

/* -------- CARD ALIGN: 按钮同一水平线 -------- */
.cards{grid-auto-rows:1fr}
.cards .card{display:flex!important;flex-direction:column!important;height:100%!important}
.cards .card h2{display:-webkit-box!important;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  min-height:3.1em!important;margin-bottom:2px!important}
.cards .card .sub{display:-webkit-box!important;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  min-height:3.2em!important;margin-bottom:2px!important}
.cards .card .cfoot{margin-top:auto!important;display:flex;flex-direction:column;gap:10px}
.cards .card .row{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px}
.cards .card .open{flex:0 0 auto!important;white-space:nowrap!important;align-self:flex-end}
/* DENSE MODE (>=13 plans) */
.cards.dense{display:block!important}
.cards.dense .ghead{margin:26px 0 10px;font:700 12.5px/1 ui-monospace,monospace;letter-spacing:.1em;
  color:#5c7fa6!important;text-transform:uppercase}
.cards.dense .rowitem{display:grid;grid-template-columns:1fr 200px 96px 56px 18px;align-items:center;
  gap:14px;padding:11px 16px;margin-bottom:7px;border:1px solid rgba(96,165,250,.14);border-radius:11px;
  background:rgba(8,16,26,.55);text-decoration:none;color:#d9eaff!important;transition:.14s}
.cards.dense .rowitem:hover{border-color:#38bdf8;background:rgba(12,26,42,.82);transform:translateX(2px)}
.cards.dense .ri-title{font-weight:600;font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cards.dense .ri-meta{color:#8fb3d9!important;font-size:12.5px;text-align:right;white-space:nowrap}
.cards.dense .ri-bar{height:5px;border-radius:99px;background:rgba(96,165,250,.16);overflow:hidden}
.cards.dense .ri-bar i{display:block;height:100%;background:linear-gradient(90deg,#38bdf8,#1d4ed8)}
.cards.dense .ri-pct{font-size:12.5px;color:#8fb3d9!important;text-align:right}
.cards.dense .ri-go{color:#38bdf8!important;text-align:right;font-weight:700}
@media(max-width:720px){.cards.dense .rowitem{grid-template-columns:1fr 62px 16px}
  .cards.dense .ri-meta,.cards.dense .ri-bar{display:none}}

/* CHOICES (home: 两个入口) */
.choices{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:8px 0 4px}
a.choice{position:relative;display:flex;flex-direction:column;gap:9px;min-height:238px;padding:30px 30px 26px;border-radius:20px;text-decoration:none;color:#e6f3ff!important;border:1px solid rgba(96,165,250,.18);background:linear-gradient(160deg,rgba(10,24,40,.86),rgba(5,10,18,.72));overflow:hidden;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
a.choice::after{content:"";position:absolute;right:-48px;top:-48px;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(56,189,248,.20),transparent 70%);pointer-events:none}
a.choice:hover{transform:translateY(-3px);border-color:rgba(56,189,248,.55);box-shadow:0 20px 44px -26px rgba(56,189,248,.85)}
a.choice.new{border-color:rgba(56,189,248,.3)}
.ch-ico{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;font-size:21px;color:#38bdf8!important;background:rgba(56,189,248,.10);border:1px solid rgba(56,189,248,.38)}
.ch-t{font-size:25px;font-weight:700;letter-spacing:-.01em;color:#eaf4ff!important;margin-top:6px}
.ch-d{color:#8fb3d9!important;font-size:13.5px;line-height:1.72;max-width:30ch}
.ch-go{margin-top:auto;color:#38bdf8!important;font-weight:700;font-size:14.5px}
@media(max-width:760px){.choices{grid-template-columns:1fr}a.choice{min-height:0}}

/* ===== HOME CENTER（首页垂直居中、放大两张入口卡）===== */
.wrap{min-height:100vh;display:flex!important;flex-direction:column;justify-content:center;max-width:1060px!important}
.wrap .choices{margin:8px 0 26px}
.wrap a.choice{min-height:268px;padding:34px 32px 28px}
.wrap a.choice .ch-t{font-size:27px}
.wrap a.choice .ch-d{font-size:14px;max-width:32ch}
.wrap .eyebrow{margin-bottom:14px}
.wrap h1{font-size:42px!important}
.wrap .lead{font-size:15px!important;margin-bottom:30px!important}
.wrap .foot{margin-top:10px}

/* SEARCH PAGE (categories.html) */
.searchpage{max-width:980px!important;padding:34px 30px 70px!important}
.searchpage .nav{display:flex;gap:9px;flex-wrap:wrap;margin:0 0 34px!important}
.searchpage .nav a{font-size:12.5px;padding:6px 13px;border:1px solid rgba(96,165,250,.22);border-radius:999px;color:#8fb3d9!important;text-decoration:none}
.searchpage .nav a:hover{border-color:#38bdf8;color:#e6f3ff!important}
.hero-search{margin:10px 0 30px}
.hero-search .eyebrow{font:600 11px/1 ui-monospace,monospace;letter-spacing:.16em;color:#5c7fa6!important;margin-bottom:12px}
.hero-search h1{margin:0 0 22px!important;font-size:40px!important;letter-spacing:-.02em;color:#e6f3ff!important}
.sbox{position:relative;display:flex;align-items:center}
.sbox .sicon{position:absolute;left:20px;font-size:19px;color:#38bdf8!important;pointer-events:none}
.sbox input{width:100%;padding:17px 20px 17px 52px;font-size:16px;color:#e6f3ff!important;background:rgba(8,18,30,.78)!important;border:1px solid rgba(96,165,250,.28)!important;border-radius:14px!important;outline:none;transition:.15s}
.sbox input::placeholder{color:#5c7fa6}
.sbox input:focus{border-color:#38bdf8!important;box-shadow:0 0 0 3px rgba(56,189,248,.16)!important}
.hintline{margin-top:11px;font-size:12.5px;color:#5c7fa6!important}
.results{margin:6px 0 10px}
.results.hidden{display:none}
a.rrow{display:grid;grid-template-columns:56px 1fr auto 18px;align-items:center;gap:14px;padding:13px 18px;margin-bottom:8px;border:1px solid rgba(96,165,250,.14);border-radius:12px;background:rgba(8,16,26,.6);text-decoration:none;color:#d9eaff!important;transition:.14s}
a.rrow:hover{border-color:#38bdf8;background:rgba(12,26,42,.85);transform:translateX(2px)}
.r-type{font-size:10.5px;letter-spacing:.08em;color:#5c7fa6!important;border:1px solid rgba(96,165,250,.2);border-radius:5px;padding:3px 0;text-align:center}
a.rrow.cat .r-type{color:#38bdf8!important;border-color:rgba(56,189,248,.4)}
.r-title{font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.r-meta{font-size:12.5px;color:#8fb3d9!important;white-space:nowrap}
.r-go{color:#38bdf8!important;text-align:right}
.empty{padding:26px 4px;color:#5c7fa6!important;font-size:13.5px}
.idle.hidden{display:none}
.idle-head{font-size:12px;letter-spacing:.1em;color:#5c7fa6!important;margin:18px 0 12px}
.searchpage .chips{display:flex;gap:9px;flex-wrap:wrap;margin:0}
a.chip{padding:9px 16px;border:1px solid rgba(96,165,250,.22);border-radius:999px;font-size:13.5px;color:#cfe3f7!important;text-decoration:none;transition:.14s;background:none}
a.chip:hover{border-color:#38bdf8;background:rgba(56,189,248,.1);color:#e6f3ff!important}
.ghostbtn{margin:20px 0 0;padding:9px 16px;background:transparent!important;border:1px dashed rgba(96,165,250,.3)!important;border-radius:999px;color:#8fb3d9!important;font-size:13px;cursor:pointer}
.ghostbtn:hover{border-color:#38bdf8!important;color:#e6f3ff!important}
.catgrid.hidden{display:none!important}
@media(max-width:640px){.searchpage{padding:22px 16px 56px!important}.hero-search h1{font-size:29px!important}a.rrow{grid-template-columns:48px 1fr 16px}.r-meta{display:none}}

/* ============ CATEGORY HUES (每个分类有自己的颜色) ============ */
/* 卡片：左侧 3px 分类色条 + 分类徽章用分类色 */
.cards .card{position:relative;overflow:hidden}
.cards .card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--c,#38bdf8),transparent);opacity:.9}
.cards .card .badge{color:var(--c,#38bdf8)!important;
  border:1px solid color-mix(in srgb,var(--c,#38bdf8) 42%,transparent)!important;
  background:color-mix(in srgb,var(--c,#38bdf8) 10%,transparent)!important;
  border-radius:999px!important}
.cards .card .bar i{background:linear-gradient(90deg,var(--c,#38bdf8),color-mix(in srgb,var(--c,#38bdf8) 45%,#0b1a27))!important}
.cards .card:hover{border-color:color-mix(in srgb,var(--c,#38bdf8) 55%,transparent)!important}

/* 密集行：左侧分类色点 */
.cards.dense .rowitem{position:relative;padding-left:30px!important}
.cards.dense .rowitem::before{content:"";position:absolute;left:14px;top:50%;
  width:7px;height:7px;margin-top:-3.5px;border-radius:50%;
  background:var(--c,#38bdf8);box-shadow:0 0 0 3px color-mix(in srgb,var(--c,#38bdf8) 16%,transparent)}
.cards.dense .rowitem:hover{border-color:color-mix(in srgb,var(--c,#38bdf8) 60%,transparent)!important}
.cards.dense .ri-bar i{background:linear-gradient(90deg,var(--c,#38bdf8),color-mix(in srgb,var(--c,#38bdf8) 40%,#0b1a27))!important}

/* 分类中转页卡片：左上角分类色方块 */
a.catcard{position:relative}
a.catcard::before{content:"";position:absolute;left:20px;top:20px;width:10px;height:10px;
  border-radius:3px;background:var(--c,#38bdf8);
  box-shadow:0 0 14px color-mix(in srgb,var(--c,#38bdf8) 70%,transparent)}
a.catcard .cc-n{color:var(--c,#38bdf8)!important}
a.catcard:hover{border-color:color-mix(in srgb,var(--c,#38bdf8) 60%,transparent)!important}

/* SEARCH POLISH v2 (chips 分类色点 + 首页顶部对齐) */
.wrap:has(.searchpage){justify-content:flex-start!important}
.searchpage{margin:0 auto!important}
.chips a.chip{position:relative!important;padding-left:26px!important}
.chips a.chip::before{content:'';position:absolute;left:11px;top:50%;width:7px;height:7px;border-radius:50%;transform:translateY(-50%);background:var(--c,#38bdf8);box-shadow:0 0 10px var(--c,#38bdf8)}
a.chip:hover{background:rgba(56,189,248,.14)!important}

/* REFINE v4 (ink tiers / hairline / grain / near-white CTA) */
:root{--ink-1:#e9eef6;--ink-2:#9fadc0;--ink-3:#7c8a9d;
--surf-1:rgba(255,255,255,.045);--surf-2:rgba(255,255,255,.075);--surf-3:rgba(255,255,255,.11)}
body{color:var(--ink-1)!important}
h1,h2,.ch-t,.cc-name,.ri-title,.card h2,.week-title{color:var(--ink-1)!important;letter-spacing:.02em!important}
.lead,.ch-d,.cc-meta,.ri-meta,.foot,.hintline,.hint,.card .sub,.card .meta{color:var(--ink-2)!important}
.eyebrow,.ghead,.ri-pct,.cat-meta,.cc-go{color:var(--ink-3)!important}
.card,a.entry,a.choice,a.catcard,.rowitem,.week{
border-color:rgba(255,255,255,.07)!important;
box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 1px 2px rgba(0,0,0,.4),0 10px 30px -14px rgba(0,0,0,.8)!important}
a.open,.card .open,.card a.open,.btn,.newbtn,#save,button.btn,.qbtn{
background:linear-gradient(180deg,#f4f8ff,#dbe6f5)!important;color:#0a1017!important;
border:0!important;box-shadow:0 8px 22px -12px rgba(255,255,255,.35)!important}
html::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:1;opacity:.035;mix-blend-mode:overlay;
background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3'/></filter><rect width='140' height='140' filter='url(%23n)' opacity='.6'/></svg>")}

/* ===== AUDIT FIX v10 ===== */
/* #1 整页垂直居中只作用于首页，搜索页顶部起排 */
.wrap.home{min-height:100vh;display:flex!important;flex-direction:column;justify-content:center;max-width:1060px!important}
.wrap.searchpage{justify-content:flex-start!important;min-height:auto!important}
/* #2 标题金属渐变回来 */
h2{color:var(--ink-1)!important}
.home h1,.searchpage h1,.catpage h1,.wrap>h1{background:linear-gradient(92deg,#ffffff 0%,#dceeff 46%,#7cc4f5 100%)!important;-webkit-background-clip:text!important;background-clip:text!important;-webkit-text-fill-color:transparent!important;color:transparent!important;text-shadow:0 0 60px rgba(56,189,248,.18)!important}
/* #3 选中的分类 chip 一眼可见 */
.chips .chip.on,.chips .chip[aria-pressed="true"]{background:linear-gradient(135deg,#22d3ee,#2563eb)!important;border-color:transparent!important;color:#04141f!important;box-shadow:0 6px 18px -10px rgba(56,189,248,.9)!important;font-weight:700!important}
/* #5 百分比成为每行视觉锚点 */
.cards.dense .ri-pct{color:var(--ink-1)!important;font-weight:600!important;font-variant-numeric:tabular-nums;min-width:46px;text-align:right}
.cards.dense .ri-meta{color:var(--ink-2)!important;font-variant-numeric:tabular-nums}
body{font-variant-numeric:tabular-nums}
/* #7 密集行副标题 */
.cards.dense .ri-sub{display:block;font-size:12px;color:var(--ink-3);font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:44ch;margin-top:2px}
.cards.dense .ri-title{display:block;min-width:0}
/* #8 分组头与筛选栏吸顶 */
.cards.dense .ghead{position:sticky;top:0;z-index:2;background:linear-gradient(180deg,rgba(2,6,10,.96),rgba(2,6,10,.82));backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:9px 0;margin:22px 0 6px;display:flex;align-items:center;gap:8px;letter-spacing:.02em!important}
.toolbar{position:sticky;top:0;z-index:3;padding:10px 0;background:linear-gradient(180deg,rgba(0,2,6,.96),rgba(0,2,6,.5))}
/* #20 分组色点 */
.cards.dense .ghead .gdot{width:8px;height:8px;border-radius:2px;background:var(--c,#38bdf8);box-shadow:0 0 8px var(--c,#38bdf8);display:inline-block;flex:0 0 auto}
/* #12 中文标题别再被字距撑散 */
.eyebrow,.cards.dense .ghead,.idle-head{letter-spacing:.02em!important}
/* #9 键盘焦点环 */
a:focus-visible,button:focus-visible,.chip:focus-visible,.rowitem:focus-visible,a.choice:focus-visible,a.catcard:focus-visible{outline:2px solid #38bdf8;outline-offset:3px;border-radius:8px}
.sbox input:focus,.searchbox input:focus{outline:none!important;border-color:#38bdf8!important;box-shadow:0 0 0 3px rgba(56,189,248,.16)!important}
/* #15 未开始的进度改为文字 */
.cards.dense .ri-bar.idle{background:none!important;color:var(--ink-3)!important;font-size:11.5px;text-align:right;width:auto;height:auto}
/* #17 hover 收敛 */
.cards .card:hover{border-color:color-mix(in srgb,var(--c,#38bdf8) 34%,rgba(255,255,255,.07))!important}
.cards.dense .rowitem{transition:border-color .12s,background .12s}
.cards.dense .rowitem:hover{border-color:rgba(56,189,248,.34)!important;background:rgba(12,24,38,.72)!important}
/* #16 环境层收一点 */
html::after{opacity:.02!important}
body::after{opacity:.45}
@media (prefers-reduced-motion:reduce){body::after{animation:none!important}}
/* #21 编辑器删除键冷色 */
.danger{color:#f6a5a5!important;border-color:rgba(246,165,165,.34)!important;background:rgba(120,40,40,.22)!important}

/* DETAIL PAGE fix: 去掉出厂橙色残留 */
:root{--acc:#38bdf8;--acc-soft:#7dd3fc}
.goal{border-left-color:#38bdf8!important;background:rgba(56,189,248,.06)!important;color:#cfe6f8!important}
.bar>i{background:linear-gradient(90deg,#38bdf8,#2563eb)!important}
.tag{color:#7dd3fc!important;border-color:rgba(56,189,248,.34)!important;background:rgba(56,189,248,.10)!important}
.row input{accent-color:#38bdf8!important}
.k.core{color:#bfe4ff!important;background:rgba(56,189,248,.16)!important}
.k.digest{color:#a8c6ff!important;background:rgba(96,165,250,.14)!important}


/* ============ POLISH v11：设计 token + 收尾 ============ */
:root{
  --fs-1:11px; --fs-2:12px; --fs-3:13px; --fs-4:15px;
  --fs-5:18px; --fs-6:24px; --fs-d:38px;
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px;
  --r-sm:8px; --r-md:14px; --r-lg:22px;
}
/* 字号归一：只动「差 0.5px 看不出、但换行会抖」的那几处 */
.eyebrow,.ri-meta,.hintline,.foot,.cat-meta,.cc-meta{font-size:var(--fs-2)!important}
.ri-pct,.ri-go,.chip,.nav a,.ghostbtn{font-size:var(--fs-3)!important}
.lead,.ch-d,.card .sub,.rowitem .ri-sub{font-size:var(--fs-4)!important}
.card h2{font-size:var(--fs-5)!important}
.catcard .cc-name,.ch-t{font-size:var(--fs-5)!important}
h1{font-size:var(--fs-d)!important;letter-spacing:.01em}
/* 数字一律等宽，成列才好看 */
body,.ri-meta,.ri-pct,.hintline{font-variant-numeric:tabular-nums}
/* 入场动画：单一节奏，卡片延迟交给 --i 变量 */
.wrap>*{animation:riseIn .5s both}
.cards .card{animation:delayCard .55s both;animation-delay:calc(min(var(--i,0),12) * 45ms)}
.cards.dense .rowitem{animation:riseIn .45s both;animation-delay:calc(min(var(--i,0),14) * 28ms)}
@keyframes delayCard{from{opacity:0;transform:translate3d(0,18px,0) scale(.985)}to{opacity:1;transform:none}}
/* 分类中转页宫格保底（原 CATEGORY PAGE 段已删，这里只留还在用的） */
.catgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(288px,1fr));gap:var(--s4);margin-top:var(--s5)}
@media(max-width:640px){.catgrid{grid-template-columns:1fr}}

/* STEP DETAIL + RESOURCE LINK */
.row .how{margin:8px 0 2px;display:flex;flex-direction:column;gap:6px}
.row .how .stp{display:flex;gap:8px;align-items:flex-start;font-size:13px;line-height:1.55;color:#9fadc0}
.row .how .stp b{flex:0 0 18px;height:18px;border-radius:6px;background:rgba(56,189,248,.14);
color:#7dd3fc;font:600 11px/18px ui-monospace,monospace;text-align:center;margin-top:1px}
.row .lnk{display:inline-flex;align-items:center;gap:5px;margin-top:9px;padding:4px 12px;
border-radius:999px;font-size:12.5px;color:#7dd3fc;text-decoration:none;
border:1px solid rgba(56,189,248,.34);background:rgba(56,189,248,.08)}
.row .lnk:hover{border-color:#38bdf8;background:rgba(56,189,248,.18)}

/* EDITOR STEP FIELDS (how / link) */
.ewrap .day2{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:-4px 0 12px 44px}
.ewrap .day2 textarea,.ewrap .day2 input{background:rgba(8,16,26,.72)!important;border:1px solid rgba(96,165,250,.22)!important;border-radius:9px!important;color:#d9eaff!important;font-size:12.5px!important;line-height:1.5!important;padding:8px 10px!important;font-family:inherit!important;resize:vertical}
.ewrap .day2 textarea:focus,.ewrap .day2 input:focus{border-color:#38bdf8!important;outline:none!important}
@media(max-width:700px){.ewrap .day2{grid-template-columns:1fr;margin-left:0}}

/* HELP FLOATER */
#hf-help{position:fixed;right:22px;bottom:22px;z-index:60;font:14px/1.6 "Microsoft YaHei","PingFang SC",system-ui,sans-serif}
#hf-fab{width:52px;height:52px;border-radius:50%;border:1px solid rgba(56,189,248,.5);
  background:linear-gradient(180deg,#f4f8ff,#dbe6f5);color:#0a1017;font-size:22px;font-weight:700;
  cursor:pointer;box-shadow:0 12px 30px -12px rgba(56,189,248,.85);transition:.16s}
#hf-fab:hover{transform:translateY(-2px);box-shadow:0 16px 34px -12px rgba(56,189,248,1)}
#hf-fab.on{background:linear-gradient(135deg,#38bdf8,#1d4ed8);color:#02121c;border-color:transparent}
#hf-panel{position:fixed;right:22px;bottom:86px;width:360px;max-height:70vh;display:flex;flex-direction:column;
  border:1px solid rgba(96,165,250,.24);border-radius:18px;overflow:hidden;
  background:rgba(9,17,28,.94);backdrop-filter:blur(14px) saturate(1.4);
  box-shadow:0 30px 70px -30px rgba(0,0,0,.95)}
#hf-panel header{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:13px 16px;border-bottom:1px solid rgba(96,165,250,.16);color:#e9eef6}
#hf-panel header b{font-size:14px}
#hf-x{background:none;border:0;color:#8fb3d9;font-size:20px;line-height:1;cursor:pointer}
#hf-log{flex:1;overflow:auto;padding:14px 16px;display:flex;flex-direction:column;gap:8px;max-height:44vh}
#hf-log p{margin:0;font-size:13px}
.hf-sys{color:#9fadc0}
.hf-step{color:#cfe6f8}
.hf-me{color:#7dd3fc;font-weight:700}
#hf-form{display:flex;gap:8px;padding:11px 12px;border-top:1px solid rgba(96,165,250,.16)}
#hf-q{flex:1;background:rgba(8,16,26,.72);border:1px solid rgba(96,165,250,.22);border-radius:9px;
  padding:9px 11px;color:#e9eef6;font-size:13px;outline:none}
#hf-q:focus{border-color:#38bdf8;box-shadow:0 0 0 3px rgba(56,189,248,.14)}
#hf-form button{border:0;border-radius:9px;padding:0 15px;cursor:pointer;font-size:13px;
  background:linear-gradient(180deg,#f4f8ff,#dbe6f5);color:#0a1017;font-weight:700}
#hf-links{display:flex;flex-direction:column;gap:6px;padding:0 14px 14px}
#hf-links a{color:#7dd3fc;text-decoration:none;font-size:12.5px;border:1px solid rgba(56,189,248,.28);
  border-radius:8px;padding:7px 10px;background:rgba(56,189,248,.08)}
#hf-links a:hover{background:rgba(56,189,248,.16)}
@media(max-width:700px){#hf-panel{right:12px;left:12px;width:auto;bottom:80px}#hf-fab{right:16px;bottom:16px}}

/* HF PANEL HIDDEN FIX */
#hf-panel[hidden]{display:none!important}


/* HF PANEL HARD HIDE */
#hf-panel[hidden],#hf-panel[style*="none"]{display:none!important}
#hf-fab.on{display:none!important}


/* ===== POLISH v11 · 细节质感（2026-10-22） ===== */
:root{
  --hair:rgba(255,255,255,.06);
  --hair-strong:rgba(255,255,255,.11);
  --teal:rgba(94,234,212,.55);
}
/* 1. 全局噪点层：压掉深色渐变的塑料感（只用一次，不影响点击） */
html::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  opacity:.055;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}
/* 2. 每日任务行：从"挤在一起"改成分栏网格 */
.w .row{
  display:grid!important;
  grid-template-columns:auto 22px 1fr auto auto!important;
  align-items:start!important;
  gap:0 10px!important;
  padding:11px 6px!important;
  border-bottom:1px solid var(--hair)!important;
}
.w .row:last-child{border-bottom:0!important}
.w .row .txt{font-size:15px!important;line-height:1.5!important}
/* 3. 元信息降噪：11px + 字距 + 45% 不透明 + 等宽数字 */
.w .k,.w .row .min,.w .row .d{
  font-size:11px!important;letter-spacing:.06em!important;
  opacity:.5!important;font-variant-numeric:tabular-nums!important;
}
/* 4. 勾选瞬间的环扩散 + 延时淡化（完成感） */
.row input[type=checkbox]{accent-color:#5eead4}
.row:has(input:checked) .txt{opacity:.55;transition:opacity .3s ease .28s}
/* 5. 徽章统一规格 */
.k{height:20px!important;padding:0 8px!important;border-radius:6px!important;font-size:11px!important;line-height:20px!important}
/* 6. 周头：右侧完成度圆点（滴答清单做法） */
.week .hd{position:relative!important}
/* 7. 卡片 hover：抬升 2px + 青边（Linear/Things 手感） */
.cards .card,a.catcard,a.choice,.wcard{
  transition:transform .18s cubic-bezier(.2,.8,.2,1),border-color .18s,box-shadow .18s!important;
}
.cards .card:hover,a.catcard:hover,a.choice:hover{
  transform:translateY(-2px)!important;
  border-color:rgba(94,234,212,.30)!important;
  box-shadow:0 18px 40px -30px rgba(94,234,212,.55)!important;
}
/* 8. 搜索框聚焦：外发光 + 细渐变线 */
.sbox input:focus{
  box-shadow:0 0 0 1px rgba(94,234,212,.35),0 10px 34px -14px rgba(94,234,212,.35)!important;
  border-color:rgba(94,234,212,.42)!important;
}
/* 9. 分组头吸顶 + 细分隔线（50 条也不乱） */
.cards.dense .ghead{
  position:sticky!important;top:0!important;z-index:5!important;
  backdrop-filter:blur(8px) saturate(1.3);-webkit-backdrop-filter:blur(8px) saturate(1.3);
  background:linear-gradient(180deg,rgba(4,10,18,.92),rgba(4,10,18,.72))!important;
  padding:8px 2px!important;margin-top:18px!important;
  border-bottom:1px solid var(--hair)!important;
}
/* 10. 节奏：区块间距统一 32，块内 8 */
.week+.week{margin-top:16px!important}
