/* ======================================================================
   Changelog 生成器 · 独立设计（发版纸稿 / 打字机主题）
   浅色 = 暖米纸 + 墨青 + 火漆红；深色 = 深夜书桌
   ====================================================================== */
.cg{
  --ink:#22303c; --sub:#5d6b78; --faint:#9aa7b2;
  --bg:#f7f3ea; --card:#fffdf7; --card2:#f1eadb; --line:#e3d9c4; --line2:#ece4d3;
  --pri:#1e3a5f; --pri-2:#2c5c8f; --pri-soft:#e3ecf5; --pri-ink:#173153;
  --wax:#b3402a; --wax-soft:#f8e9e4;
  --ok:#2f7d4f; --err:#b3402a;
  --r:6px;
  --shadow:0 1px 0 rgba(34,48,60,.04),0 10px 26px rgba(60,50,30,.10);
  color:var(--ink);
  font-family:-apple-system,"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",system-ui,sans-serif;
  font-size:15px; line-height:1.75;
  background:
    linear-gradient(180deg, rgba(255,255,255,.5), transparent 220px),
    repeating-linear-gradient(0deg, transparent 0 27px, rgba(30,58,95,.035) 27px 28px),
    var(--bg);
  padding:0 16px 56px;
}
:root[data-theme="dark"] .cg{
  --ink:#e9e4d8; --sub:#a9a294; --faint:#6f6a5e;
  --bg:#171512; --card:#211e19; --card2:#2a2620; --line:#3c362c; --line2:#332e26;
  --pri:#8fb8dd; --pri-2:#b3d1ee; --pri-soft:rgba(143,184,221,.12); --pri-ink:#c9dff2;
  --wax:#e07a5f; --wax-soft:rgba(224,122,95,.12);
  --ok:#6fbf8b; --err:#e07a5f;
  --shadow:0 1px 0 rgba(0,0,0,.3),0 12px 30px rgba(0,0,0,.45);
  background:
    linear-gradient(180deg, rgba(255,255,255,.03), transparent 220px),
    repeating-linear-gradient(0deg, transparent 0 27px, rgba(143,184,221,.05) 27px 28px),
    var(--bg);
}
.cg *{box-sizing:border-box;}
.cg-wrap{max-width:1080px;margin:0 auto;}
.cg h1,.cg h2,.cg .cg-serif{font-family:Georgia,"Songti SC","SimSun",serif;}
.cg code,.cg pre,.cg textarea{font-family:"JetBrains Mono",ui-monospace,Consolas,monospace;}

.cg-hero{margin-top:24px;padding:26px 30px;background:var(--card);border:1px solid var(--line);border-left:6px solid var(--pri);border-radius:var(--r);box-shadow:var(--shadow);}
.cg-hero h1{margin:0 0 6px;font-size:clamp(23px,3.4vw,30px);font-weight:900;letter-spacing:.01em;}
.cg-hero h1 .cg-stamp{display:inline-block;margin-left:10px;padding:2px 10px;border:2px solid var(--wax);color:var(--wax);border-radius:4px;font-size:12px;font-weight:700;transform:rotate(-3deg);vertical-align:middle;}
.cg-hero p{margin:0;color:var(--sub);max-width:820px;}
.cg-hero p b{color:var(--pri-ink);}

.cg-desk{display:grid;grid-template-columns:1.05fr .95fr;gap:18px;margin-top:20px;}
@media (max-width:920px){.cg-desk{grid-template-columns:1fr;}}
.cg-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:18px 20px;}
.cg-card h2{margin:0 0 12px;font-size:15px;font-weight:800;color:var(--pri);display:flex;align-items:center;gap:8px;letter-spacing:.04em;}
.cg-card h2::before{content:"";width:10px;height:10px;border-radius:2px;background:var(--wax);}
.cg-lab{font-size:12.5px;font-weight:700;color:var(--sub);display:block;margin:10px 0 4px;}
.cg-in{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--card2);color:var(--ink);font-size:14px;outline:none;}
.cg-in:focus{border-color:var(--pri-2);box-shadow:0 0 0 3px var(--pri-soft);}
.cg-grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.cg-addrow{display:grid;grid-template-columns:130px 1fr auto;gap:8px;margin-top:12px;align-items:stretch;}
.cg-btn{border:1px solid var(--pri);background:var(--pri);color:#fff;border-radius:var(--r);padding:8px 16px;font-size:13.5px;font-weight:700;cursor:pointer;transition:all .15s;white-space:nowrap;}
.cg-btn:hover{background:var(--pri-2);border-color:var(--pri-2);}
.cg-btn-ghost{background:transparent;color:var(--pri-ink);border-color:var(--line);}
.cg-btn-ghost:hover{background:var(--pri-soft);border-color:var(--pri-2);}
.cg-entries{list-style:none;margin:12px 0 0;padding:0;max-height:230px;overflow:auto;}
.cg-entries li{position:relative;padding:7px 34px 7px 22px;border-bottom:1px dashed var(--line2);font-size:13.5px;}
.cg-entries li::before{content:"";position:absolute;left:6px;top:14px;width:7px;height:7px;border-radius:50%;background:var(--pri);}
.cg-entries li .cg-tag{display:inline-block;min-width:74px;font-size:11px;font-weight:800;color:var(--wax);background:var(--wax-soft);border-radius:3px;padding:1px 7px;margin-right:8px;}
.cg-entries li .cg-del{position:absolute;right:4px;top:6px;border:none;background:none;color:var(--faint);font-size:16px;cursor:pointer;line-height:1;}
.cg-entries li .cg-del:hover{color:var(--err);}
.cg-out{width:100%;min-height:340px;resize:vertical;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r);background:var(--card2);color:var(--ink);font-size:12.5px;line-height:1.7;}
.cg-msg{margin-top:10px;font-size:13px;min-height:20px;font-weight:700;}
.cg-msg.err{color:var(--err);}
.cg-msg.ok{color:var(--ok);}
.cg-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}

/* ---------- 模板预设 / 分布图 / 多格式导出 ---------- */
.cg-tip{margin:0 0 10px;font-size:12.5px;color:var(--sub);}
.cg-presets,.cg-export{margin-top:18px;}
.cg-preset-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
@media (max-width:760px){.cg-preset-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:460px){.cg-preset-grid{grid-template-columns:1fr;}}
.cg-preset{border:1px dashed var(--line);background:var(--card2);color:var(--pri-ink);border-radius:var(--r);padding:8px 11px;font-size:13px;font-weight:700;text-align:left;cursor:pointer;transition:all .15s;line-height:1.45;}
.cg-preset:hover{border-color:var(--pri-2);background:var(--pri-soft);}
.cg-viz{margin-top:14px;padding:10px 12px;background:var(--card2);border:1px solid var(--line2);border-radius:var(--r);overflow-x:auto;}
.cg-viz svg{display:block;width:100%;height:auto;min-width:460px;}
.cg-viz .cg-vt{fill:var(--sub);font-size:12px;font-weight:700;font-family:inherit;}
.cg-viz .cg-vl{fill:var(--ink);font-size:11.5px;font-weight:800;font-family:"JetBrains Mono",ui-monospace,Consolas,monospace;}
.cg-viz .cg-vn{fill:var(--sub);font-size:11px;font-family:"JetBrains Mono",ui-monospace,Consolas,monospace;}
.cg-fmt-row{display:flex;flex-wrap:wrap;gap:6px;}
.cg-fmt{border:1px solid var(--line);background:var(--card2);color:var(--sub);border-radius:999px;padding:5px 15px;font-size:12.5px;font-weight:800;cursor:pointer;transition:all .15s;}
.cg-fmt:hover{border-color:var(--pri-2);color:var(--pri-ink);}
.cg-fmt.on{background:var(--pri);border-color:var(--pri);color:#fff;}
:root[data-theme="dark"] .cg-fmt.on{color:#101821;}
.cg-fmt-out{margin:12px 0 0;padding:12px 14px;background:var(--card2);border:1px solid var(--line);border-radius:var(--r);max-height:300px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:12.5px;line-height:1.65;color:var(--ink);}
.cg-fmt-out.empty{color:var(--faint);font-style:italic;}
:root[data-theme="dark"] .cg-export .cg-btn:not(.cg-btn-ghost){color:#101821;}

.cg-faq{margin-top:34px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px 26px;box-shadow:var(--shadow);}
.cg-faq h2{margin:0 0 10px;font-size:19px;font-weight:900;color:var(--pri);}
.cg-faq h3{margin:16px 0 4px;font-size:15px;font-weight:800;color:var(--pri-ink);}
.cg-faq p{margin:0;color:var(--sub);font-size:14px;}
.cg-faq p b{color:var(--ink);}
