/* ─── 品牌字体 ─── */
@font-face{font-family:'Syne';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/syne-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Syne';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/syne-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'Syne';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/syne-latin-700-normal.woff2') format('woff2')}
@font-face{font-family:'Syne';font-style:normal;font-weight:800;font-display:swap;src:url('fonts/syne-latin-800-normal.woff2') format('woff2')}
@font-face{font-family:'DM Mono';font-style:normal;font-weight:300;font-display:swap;src:url('fonts/dm-mono-latin-300-normal.woff2') format('woff2')}
@font-face{font-family:'DM Mono';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/dm-mono-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Noto Sans SC Local';font-style:normal;font-weight:100 900;font-display:swap;src:url('fonts/noto-sans-sc-local.woff2') format('woff2')}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{color-scheme:dark;scroll-behavior:smooth;scroll-padding-top:72px}
:root{
  --bg:#0B0B0B;--surface:#161616;--surface-raised:#1E1E1E;
  --accent:#FFB547;--accent-light:#FFD08A;--accent-glow:rgba(255,181,71,0.12);
  --text:#F0ECE4;--text-muted:#8A857F;--text-dim:#7A7570;--green:#48C088;
  --line:rgba(255,255,255,.07);
  --font-display:'Syne','Noto Sans SC Local',sans-serif;--font-mono:'DM Mono','Noto Sans SC Local',monospace;
  --font-cn:'Noto Sans SC Local','Noto Sans SC','PingFang SC','Microsoft YaHei','Source Han Sans SC','Segoe UI Emoji','Apple Color Emoji',sans-serif;
}
body{background:var(--bg);color:var(--text);font-family:var(--font-cn);line-height:1.7;overflow-x:hidden;-webkit-font-smoothing:antialiased}
::selection{background:var(--accent);color:var(--bg)}
.container{max-width:1320px;margin:0 auto;padding:0 clamp(24px,5vw,80px)}
/* ─── NAV ─── */
nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  /* 显式高度：与全站导航同一口径（内容区 64 + 1px 下边框 = 65），不再靠 padding 撑 */
  height:65px;padding:0;display:flex;align-items:center;
  background:rgba(11,11,11,0.82);
  backdrop-filter:blur(20px);
  border-bottom:1px solid rgba(255,181,71,0.06);
}
nav .container{display:flex;align-items:center;gap:24px;width:100%}
.nav-logo{
  display:flex;align-items:center;gap:12px;
  font-family:var(--font-display);font-weight:800;font-size:1.15rem;
  letter-spacing:-0.02em;color:var(--text);text-decoration:none;
}
.nav-logo span{color:var(--accent)}
.nav-logo-icon{width:36px;height:36px;flex-shrink:0}
/* 右侧组：导航链接 + 主题键 + 汉堡整体靠右（margin-left:auto），与 logo 之间留弹性空白 */
.nav-right{display:flex;align-items:center;gap:26px;margin-left:auto}
/* 导航内容统一对齐到主题按钮：同为 34px 高的盒子，文字垂直居中 */
.nav-links{display:flex;align-items:center;gap:26px;list-style:none}
.nav-links li{display:flex;align-items:center;height:34px}
.nav-links a{
  display:flex;align-items:center;height:100%;line-height:1;
  font-family:var(--font-mono);font-size:0.8rem;color:var(--text-muted);
  text-decoration:none;letter-spacing:0.04em;transition:color 0.3s;
}
.nav-links li a.on{position:relative;color:var(--text)}
.nav-links li a.on::after{content:'';position:absolute;left:50%;margin-left:-7px;bottom:-7px;width:14px;height:2px;border-radius:1px;background:var(--accent)}
.nav-links a:hover{color:var(--accent)}
.nav-links a.nav-spec{color:var(--accent);opacity:.85}
.nav-links a.nav-spec:hover{color:var(--accent-light);opacity:1}


.theme-tg{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex:0 0 auto;padding:0;border-radius:9px;background:transparent;color:var(--text-muted,var(--tm,var(--td,#8A857F)));border:1px solid color-mix(in srgb,currentColor 30%,transparent);cursor:pointer;transition:color .25s,border-color .25s,background .25s}
.theme-tg:hover{color:var(--accent,var(--ac,var(--cy,#FFB547)));background:color-mix(in srgb,currentColor 10%,transparent)}
.theme-tg:focus-visible{outline:2px solid var(--accent,var(--ac,var(--cy,#FFB547)));outline-offset:2px}
.theme-tg svg{width:16px;height:16px;display:block}
.theme-tg .ic-moon{display:none}
[data-theme=light] .theme-tg .ic-sun{display:none}
[data-theme=light] .theme-tg .ic-moon{display:block}
/* ─── HAMBURGER ─── */
.hamburger{
  display:none;flex-direction:column;gap:5px;
  background:none;border:none;cursor:pointer;padding:8px;z-index:1001;
}
.hamburger span{
  display:block;width:22px;height:2px;background:var(--text);border-radius:2px;
  transition:all 0.3s ease;
}
.hamburger.active span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}
.hamburger.active span:nth-child(2){opacity:0}
.hamburger.active span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}

.mobile-menu{
  display:none;position:fixed;top:0;left:0;right:0;bottom:0;
  background:rgba(10,10,10,0.97);z-index:999;
  flex-direction:column;align-items:center;justify-content:center;gap:28px;
}
.mobile-menu.active{display:flex}
.mobile-menu a{
  font-family:var(--font-cn);font-size:1.2rem;font-weight:400;
  color:var(--text-muted);text-decoration:none;transition:color 0.2s;
}
.mobile-menu a:hover{color:var(--accent)}


[data-theme=light]{color-scheme:light;--bg:#F3F2F0;--surface:#FFFFFF;--surface-raised:#FAF8F6;--accent:#FFB547;--accent-light:#FFD08A;--accent-glow:rgba(255,181,71,.07);--text:#262524;--text-muted:#666664;--text-dim:#747672;--green:#17864A;--line:rgba(21,21,20,.10)}
[data-theme=light] nav{background:rgba(243,242,240,.86);border-bottom-color:rgba(143,91,18,.10)}
[data-theme=light] .mobile-menu{background:rgba(243,242,240,.97)}

main{padding-top:65px;min-height:60vh}
.wrap{max-width:960px;margin:0 auto}
/* 面包屑必须是 div：<nav> 会被全局 nav{position:fixed} 命中，钉在顶部盖住 logo */
.crumb{padding:34px 0 0;font-family:var(--font-mono);font-size:.74rem;letter-spacing:.06em;color:var(--text-dim)}
.crumb a{color:var(--text-muted);text-decoration:none;transition:color .25s}
.crumb a:hover{color:var(--accent)}
.crumb i{font-style:normal;opacity:.45;margin:0 8px}

.thead{padding:26px 0 0}
.thead .eb{font-family:var(--font-mono);font-size:.78rem;color:var(--accent);letter-spacing:.12em;margin-bottom:16px}
.thead h1{font-family:var(--font-display);font-weight:800;font-size:clamp(2.2rem,4.4vw,3.1rem);line-height:1.1;letter-spacing:-.03em}
.thead .lead{margin-top:20px;font-size:1.06rem;font-weight:300;line-height:1.95;color:var(--text)}
.thead .chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.thead .chips span{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.05em;color:var(--text-muted);border:1px solid var(--line);border-radius:6px;padding:5px 10px}

figure{margin:46px 0;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px}
figure img{display:block;width:100%;height:auto;border-radius:8px}
figure.ui img{max-width:600px;margin:0 auto}
figcaption{margin-top:12px;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.04em;color:var(--text-dim);text-align:center;line-height:1.6}

section.blk{padding:12px 0 8px}
section.blk + section.blk{margin-top:52px;border-top:1px solid var(--line);padding-top:46px}
h2{font-family:var(--font-display);font-weight:700;font-size:1.5rem;letter-spacing:-.02em;margin-bottom:18px}
h2 em{font-style:normal;color:var(--accent)}
.blk p{font-size:.98rem;font-weight:300;line-height:2;color:var(--text-muted);margin-bottom:14px}
.blk p strong{color:var(--text);font-weight:500}
.blk .hint{font-family:var(--font-mono);font-size:.78rem;color:var(--text-dim);letter-spacing:.03em}

ol.out{list-style:none;counter-reset:o;display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:6px}
ol.out li{counter-increment:o;position:relative;padding:20px 22px 20px 52px;background:var(--surface);border:1px solid var(--line);border-radius:12px;font-size:.92rem;font-weight:300;line-height:1.85;color:var(--text-muted)}
ol.out li::before{content:counter(o,decimal-leading-zero);position:absolute;left:20px;top:20px;font-family:var(--font-mono);font-size:.78rem;color:var(--accent)}
ol.out li b{display:block;color:var(--text);font-weight:500;margin-bottom:4px;font-size:.98rem}

.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:8px 0 22px}
.tier{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px}
.tier .n{font-family:var(--font-mono);font-size:.72rem;color:var(--text-dim);letter-spacing:.08em}
.tier .t{font-family:var(--font-display);font-weight:700;font-size:1.7rem;letter-spacing:-.02em;margin-top:6px}
.tier .d{font-size:.82rem;color:var(--text-muted);font-weight:300;margin-top:4px}
.tier.hot{border-color:color-mix(in srgb,var(--accent) 40%,transparent)}
.tier.hot .t{color:var(--accent)}

dl.faq{margin-top:4px}
dl.faq dt{font-weight:500;font-size:.98rem;color:var(--text);padding:22px 0 0;line-height:1.7}
dl.faq dt:first-child{padding-top:0}
dl.faq dd{margin:8px 0 0;font-size:.94rem;font-weight:300;line-height:1.95;color:var(--text-muted)}

.back{margin:64px 0 20px;padding:28px 30px;background:var(--surface);border:1px solid var(--line);border-radius:14px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.back .t{font-size:.96rem;font-weight:300;color:var(--text-muted);line-height:1.8}
.back .t b{color:var(--text);font-weight:500}
.back a{display:inline-flex;align-items:center;height:38px;padding:0 16px;border-radius:9px;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent);font-family:var(--font-mono);font-size:.78rem;letter-spacing:.05em;text-decoration:none;white-space:nowrap;transition:background .25s}
.back a:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}
.credit{margin:0 0 76px;font-family:var(--font-mono);font-size:.7rem;color:var(--text-dim);letter-spacing:.03em}

footer{border-top:1px solid var(--line);padding:44px 0 52px}
.f-row{display:flex;align-items:baseline;justify-content:space-between;gap:24px;flex-wrap:wrap}
.f-brand{font-family:var(--font-display);font-weight:800;font-size:1.05rem;letter-spacing:-.02em}
.f-brand span{color:var(--accent)}
.f-brand i{font-style:normal;font-family:var(--font-cn);font-weight:300;font-size:.86rem;color:var(--text-dim);margin-left:10px}
.f-links{display:flex;gap:22px}
.f-links a{font-family:var(--font-mono);font-size:.76rem;color:var(--text-muted);text-decoration:none;letter-spacing:.04em;transition:color .25s}
.f-links a:hover{color:var(--accent)}
.f-copy{margin-top:18px;font-family:var(--font-mono);font-size:.72rem;color:var(--text-dim);letter-spacing:.04em}

@media(max-width:900px){
  .nav-links{display:none}
  .hamburger{display:flex}
  ol.out{grid-template-columns:1fr}
  .tiers{grid-template-columns:1fr}
  .tier{display:flex;align-items:baseline;gap:14px;padding:16px 18px}
  .tier .t{font-size:1.3rem;margin-top:0}
  figure.ui img{max-width:100%}
  .back{flex-direction:column;align-items:flex-start}
  .f-row{flex-direction:column;align-items:flex-start}
}
@media(max-width:1100px){.nav-links{gap:16px}}


/* 浅色：主色只做装饰，不承载小字。小字用压深档（#8F5B12 对奶白底 5.7:1） */
[data-theme=light] .thead .eb,
[data-theme=light] ol.out li::before,
[data-theme=light] .steps li::before{color:#8F5B12}

/* 跳过导航：键盘用户 Tab 第一下就能到正文（平时视觉隐藏） */
.skip-link{position:absolute;left:-9999px;top:0;z-index:9999;padding:10px 18px;background:var(--accent,var(--cy,var(--gold,#FFB547)));color:#0B0B0B;font-weight:500;font-size:.85rem;text-decoration:none;border-radius:0 0 8px 0}
.skip-link:focus{left:0}
/* ─── 移动端（≤480）修正 ─────────────────────────────────────────── */
@media(max-width:480px){
  /* 1. 导航溢出：320 下 .nav-logo 宽 251px + .nav-right 98px，右侧整块被
        body{overflow-x:hidden} 静默裁掉，汉堡按钮跑到屏外（实测 L=359，视口 320）。
        收窄 logo 与间距，给 320 留出余量。 */
  .nav-logo{font-size:.8125rem;gap:8px}
  .nav-logo-icon{width:28px;height:28px}
  .nav-right{gap:12px}
  .hamburger{padding:6px}
  /* 2. CTA 逐字折行：中文无空格，flex 压缩时会在任意字间断开
        （「看看我在做什/么」）。禁止换行并收窄内边距，让两颗按钮在 320 也能并排。 */
  .btn-primary,.btn-secondary{white-space:nowrap;padding-left:24px;padding-right:24px}
  .hero-cta{flex-wrap:wrap;gap:12px}
  /* 3. 点按区过小：行内链接实测只有 16–21px 高。用 padding 撑高、负 margin 抵消，
        视觉位置不变，只扩大触摸热区。 */
  .service-link,.f-links a,.crumb a,.footer-col ul li a{display:inline-block;
    padding-top:6px;padding-bottom:6px;margin-top:-6px;margin-bottom:-6px}
  /* 工具标签实测 23px（0.56rem 字 + 4px 内边距），差 1px 到 24 的及格线。
     用 min-height + 居中，而不是加内边距——后者会让标签块整体变高、打乱卡片节奏。 */
  .sp-card-tools a.tool-tag{display:inline-flex;align-items:center;min-height:24px}
  /* 两个字的页脚链接（如「B站」）宽度只有 23px */
  .footer-col ul li a{min-width:24px}
  /* Prism 页脚结构不同：.footer-right 里是 a，实测只有 18px 高 */
  .footer-right a{display:inline-block;padding-top:6px;padding-bottom:6px;
    margin-top:-6px;margin-bottom:-6px;min-width:24px}
  /* Prism 主视觉的眉标 8px，手机上确实读不清，抬到 9.6px（仍保持小字层级） */
  .pe,.pt{font-size:.6rem}
}
/* ─── 第二轮：字号与触摸区（≤480）────────────────────────────── */
@media(max-width:480px){
  /* 字号统一抬到 12px（原 11.2–11.8px）。本页是 42 个骨架页的模板源。 */
  .credit,.f-copy,.sib a,.thead .chips span,.tier .n,figcaption,.crumb{font-size:.75rem}
  /* 触摸区抬到 44：用 padding 撑高 + 等量负 margin 抵消，
     视觉位置与行高完全不变，只扩大命中区（链接本身无背景，安全）。 */
  .nav-logo{min-height:44px;padding-top:8px;padding-bottom:8px;margin-top:-8px;margin-bottom:-8px}
  .hamburger{min-width:44px;min-height:44px;align-items:center;justify-content:center}
  .crumb a,.sib a,.f-links a,.footer-col ul li a,.footer-right a,.back a,.service-link{
    min-height:44px;padding-top:10px;padding-bottom:10px;margin-top:-10px;margin-bottom:-10px}
  .btn{min-height:44px}
  #q{min-height:44px}
  .filters button{min-height:44px}
  #themeToggle{min-width:40px;min-height:40px}
}
/* ─── 第三轮：导航余量 / 页脚换行（≤480）─── */
@media(max-width:480px){
  /* 导航再收 3px：加高触摸区后 .nav-right 变 96px，322 会超出 320 */
  .nav-right{gap:8px}
  .nav-logo{font-size:.78rem}
}
/* --- ICP 备案号（scripts/set-icp.py 维护，不要手改）--- */
.footer-copy a.icp,.f-copy a.icp{color:inherit;text-decoration:none;margin-left:10px;
  padding:2px 0;transition:color .2s}
.footer-copy a.icp:hover,.f-copy a.icp:hover{text-decoration:underline}
.icp-bar{text-align:center;padding:28px 16px 34px;
  font-family:var(--font-mono,ui-monospace,monospace);font-size:.72rem;
  color:var(--text-dim,var(--td,#7A7570));letter-spacing:.04em}
.icp-bar a{color:inherit;text-decoration:none}
.icp-bar a:hover{text-decoration:underline}
/* --- /ICP 备案号 --- */
/* 同类工具：骨架页的内链块 */
.sib{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.sib a{font-family:var(--font-mono);font-size:.72rem;color:var(--text-muted);text-decoration:none;
  padding:7px 13px;border:1px solid var(--line);border-radius:8px;transition:color .25s,border-color .25s}
.sib a:hover{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,transparent)}

/* 内容区块：截图 / 步骤 / 场景 / FAQ（有数据才渲染） */
.shot{margin:0 0 26px}
.shot img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.shot figcaption{margin-top:10px;font-family:var(--font-mono);font-size:.76rem;color:var(--text-dim);letter-spacing:.02em}
ol.steps{list-style:none;counter-reset:st;margin:0;padding:0}
ol.steps li{counter-increment:st;position:relative;padding-left:40px;margin-bottom:16px;font-size:.98rem;font-weight:300;line-height:1.95;color:var(--text-muted)}
ol.steps li::before{content:counter(st);position:absolute;left:0;top:1px;width:26px;height:26px;border:1px solid var(--line);border-radius:7px;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:.74rem;color:var(--accent)}
ol.steps li b{color:var(--text);font-weight:500}
ul.scenes{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}
ul.scenes li{padding:11px 15px;background:var(--surface);border:1px solid var(--line);border-radius:10px;font-size:.92rem;font-weight:300;color:var(--text-muted)}
.faq details{border-bottom:1px solid var(--line);padding:15px 0}
.faq details:first-of-type{border-top:1px solid var(--line)}
.faq summary{cursor:pointer;font-size:.98rem;font-weight:500;color:var(--text);list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:'+';display:inline-block;width:16px;color:var(--accent);font-family:var(--font-mono)}
.faq details[open] summary::before{content:'\2212'}
.faq details p{margin:12px 0 0;font-size:.94rem;font-weight:300;line-height:1.95;color:var(--text-muted)}

/* 移动端：同类工具芯片（≤480）。必须放在 SIB_CSS 之后——
   SIB_CSS 是注入到样式表末尾的，模板里的媒体查询块在它前面，会被 .sib a 覆盖。
   注意：这段注释不能出现闭合的 style 标签字样，否则会被注入逻辑提前截断。 */
@media(max-width:480px){
  .sib a{font-size:.75rem;display:inline-flex;align-items:center;min-height:44px}
  .shot figcaption{font-size:.75rem}
  ol.steps li::before{font-size:.75rem}
}
/* 跳过导航：键盘用户 Tab 第一下就能到正文（平时视觉隐藏） */
.skip-link{position:absolute;left:-9999px;top:0;z-index:9999;padding:10px 18px;
background:var(--accent,var(--cy,var(--gold,#FFB547)));color:#0B0B0B;font-weight:500;font-size:.85rem;
text-decoration:none;border-radius:0 0 8px 0}
.skip-link:focus{left:0}
