:root{--bg:#f6f3ee;--card:#fff;--ink:#23201c;--sub:#7a7268;--accent:#174c3c;--line:#e4ded4}
@media(prefers-color-scheme:dark){:root{--bg:#171513;--card:#211e1b;--ink:#efe9df;--sub:#a49b8e;--accent:#4f9d81;--line:#3a352f}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.7 "Noto Sans TC","PingFang TC",system-ui,sans-serif;padding:16px 14px 80px;max-width:640px;margin-inline:auto}
h1{font-size:21px;margin:6px 0 2px;letter-spacing:.04em}
p.sub{margin:0 0 14px;color:var(--sub);font-size:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;margin-bottom:14px;box-shadow:0 1px 8px rgba(0,0,0,.04)}
label.t{font-size:14px;color:var(--sub);display:block;margin-bottom:6px}
textarea,input[type=text],input[type=password]{width:100%;border:1px solid var(--line);border-radius:12px;background:transparent;color:var(--ink);font:inherit;padding:12px}
textarea{min-height:180px;resize:vertical}
button{font:inherit;border:0;border-radius:14px;padding:14px 16px;background:var(--accent);color:#fff;font-weight:600;width:100%;min-height:52px}
button.ghost{background:transparent;color:var(--accent);border:1px solid var(--accent)}
button:disabled{opacity:.5}
.half{display:flex;gap:8px;margin-top:10px}
.half button{flex:1}
#out{white-space:pre-wrap;font-size:18px;line-height:1.95;font-family:"Noto Serif TC","PingFang TC",serif}
#out .ttl{display:block;font-size:22px;font-weight:700;margin-bottom:8px;letter-spacing:.03em}
#out .sh{display:block;font-weight:700;color:var(--accent);margin-top:12px}
.note{background:#fff3d6;color:#6b4b00;border-radius:10px;padding:9px 11px;font-size:14px;margin-bottom:10px}
@media(prefers-color-scheme:dark){.note{background:#4a3b12;color:#ffe3a1}}
.err{background:#fde3e0;color:#8a1c12;border-radius:10px;padding:9px 11px;font-size:14px;margin-top:8px}
.cnt{font-size:12px;color:var(--sub);text-align:right}
.hide{display:none}
details summary{cursor:pointer;color:var(--sub);font-size:15px;padding:6px 0}
.row{margin-top:10px}
