:root{--c:#ff2442;--bg:#f6f7f9;--card:#fff;--t:#1f2329;--m:#646a73;--ok:#12a150;--warn:#d4380d;--r:14px}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",sans-serif;background:var(--bg);color:var(--t);line-height:1.6;font-size:16px}
header{background:var(--card);border-bottom:1px solid #eee;padding:12px 16px}
header a{color:var(--t);text-decoration:none;font-weight:700}
header .back{font-weight:400;color:var(--m);margin-right:8px}
main{max-width:640px;margin:0 auto;padding:16px}
h1{font-size:22px;margin:4px 0 8px}
h2{font-size:17px;margin:0 0 10px}
.card{background:var(--card);border-radius:var(--r);padding:16px;margin-bottom:14px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.badge{display:block;background:#e8f7ee;color:var(--ok);border-radius:10px;padding:10px 12px;font-weight:600;margin-bottom:14px}
.badge small{display:block;font-weight:400;color:#3d7a55}
.tool{display:block;text-decoration:none;color:inherit}
.tool .ic{font-size:30px;float:left;margin-right:12px}
.tool b{font-size:18px}
.tool p{margin:2px 0 0;color:var(--m);font-size:14px}
label{display:block;font-size:14px;color:var(--m);margin:10px 0 4px}
input[type=number],select,input[type=text]{width:100%;font-size:16px;padding:10px;border:1px solid #dcdfe4;border-radius:10px;background:#fff}
.row{display:flex;gap:10px}.row>div{flex:1}
.seg{display:flex;gap:8px;flex-wrap:wrap}
.seg label{margin:0;flex:1;min-width:120px;border:1px solid #dcdfe4;border-radius:10px;padding:10px;color:var(--t);text-align:center;cursor:pointer}
.seg input{display:none}
.seg label:has(input:checked){border-color:var(--c);background:#fff1f3;color:var(--c);font-weight:600}
.btn{display:block;width:100%;border:0;border-radius:12px;background:var(--c);color:#fff;font-size:17px;font-weight:600;padding:14px;margin-top:14px;cursor:pointer;text-align:center;text-decoration:none}
.btn:disabled{opacity:.5}
.btn.sec{background:#fff;color:var(--c);border:1px solid var(--c)}
.drop{border:2px dashed #cfd3da;border-radius:var(--r);padding:26px 12px;text-align:center;color:var(--m);cursor:pointer;background:#fafbfc}
.drop b{color:var(--t);font-size:17px;display:block}
.hide{display:none!important}
.res{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:14px}
.res div{background:var(--bg);border-radius:10px;padding:10px}
.res b{display:block;font-size:16px}
.preview{text-align:center;margin-top:12px;background:repeating-conic-gradient(#eee 0 25%,#fff 0 50%) 0 0/16px 16px;border-radius:10px;padding:10px}
.preview img{max-width:100%;max-height:360px;box-shadow:0 1px 6px rgba(0,0,0,.15)}
.msg{border-radius:10px;padding:10px 12px;margin-top:12px;font-size:14px}
.msg.ok{background:#e8f7ee;color:#0b6b35}.msg.err{background:#fff2ee;color:var(--warn)}.msg.info{background:#eef4ff;color:#1d4ed8}
.small{font-size:13px;color:var(--m)}
footer{text-align:center;color:var(--m);font-size:13px;padding:20px 16px 40px}
footer a{color:var(--m)}
.chk{display:flex;align-items:center;gap:8px;margin-top:12px;color:var(--t);font-size:15px}
.chk input{width:20px;height:20px}
details summary{cursor:pointer;color:var(--m);font-size:14px}
