.wrap{max-width:760px;margin:0 auto;padding:28px 0}
h1{margin:20px 0 8px;font-size:30px}
    .sub{color:var(--muted);margin-bottom:20px;line-height:1.8}
    .card{background:var(--card);border-radius:18px;padding:20px;box-shadow:0 8px 24px rgba(0,0,0,.08)}
    label{display:block;color:var(--muted);font-size:13px;margin:14px 0 6px}
    textarea,select{width:100%;border:1px solid var(--border);border-radius:12px;padding:12px;font-size:15px;background:#fff;color:inherit}
    textarea{min-height:140px;resize:vertical;line-height:1.6}
    select{height:46px}
    .grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
    @media(max-width:620px){.grid{grid-template-columns:1fr}}
    .btns{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
    button,.download{border:0;border-radius:12px;padding:12px 14px;cursor:pointer;font-size:14px;text-decoration:none;display:inline-block}
    .primary{background:var(--primary);color:#fff}
    .danger{background:var(--danger);color:inherit}
    .download{background:#eef1ff;color:inherit}
    .result{margin-top:18px;padding:18px;border:1px solid var(--border);border-radius:16px;background:#fafafa;text-align:center;min-height:260px}
    canvas{max-width:100%;background:#fff;border-radius:12px}
    .status{margin-top:14px;color:var(--muted);font-size:13px;line-height:1.8}
