:root{--bg:#f5f7fb;--card:#fff;--text:#172033;--muted:#778197;--primary:#315efb;--border:#e6eaf1;--danger:#d9363e;--ok:#1a9b62}*{box-sizing:border-box}body{margin:0;font-family:Inter,"Microsoft YaHei",Arial,sans-serif;background:var(--bg);color:var(--text)}a{text-decoration:none;color:inherit}.wrap{max-width:1080px;margin:auto;padding:24px}.nav{background:#fff;border-bottom:1px solid var(--border)}.nav .wrap{display:flex;align-items:center;justify-content:space-between;padding-top:16px;padding-bottom:16px}.brand{font-weight:800;font-size:20px}.links{display:flex;gap:22px;color:#596278}.hero{padding:48px 0 26px}.hero h1{font-size:36px;margin:0 0 10px}.hero p{color:var(--muted);margin:0}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:22px;box-shadow:0 5px 22px rgba(30,48,90,.04)}.project h3{margin:0 0 20px}.price{font-size:28px;font-weight:800;color:var(--primary)}.muted{color:var(--muted)}.row{display:flex;justify-content:space-between;gap:16px;margin:10px 0}.btn{display:inline-flex;justify-content:center;align-items:center;border:0;border-radius:10px;background:var(--primary);color:#fff;padding:11px 18px;font-weight:700;cursor:pointer}.btn.gray{background:#eef1f6;color:#39445b}.btn.red{background:var(--danger)}.btn.green{background:var(--ok)}.btn.block{width:100%}.form{max-width:680px;margin:32px auto}.field{margin:18px 0}.field label{display:block;font-weight:700;margin-bottom:8px}.input,textarea,select{width:100%;padding:12px 14px;border:1px solid #dce1ea;border-radius:10px;background:#fff;font:inherit}textarea{min-height:180px;resize:vertical}.notice{padding:13px 15px;background:#f0f4ff;color:#3b54a0;border-radius:10px;margin:16px 0}.success{text-align:center;max-width:620px;margin:45px auto}.success .tick{font-size:52px;color:var(--ok)}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:12px;border-bottom:1px solid var(--border);text-align:left;font-size:14px}th{color:#687287;background:#fafbfc}.admin-layout{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.side{background:#172033;color:#dce2ef;padding:24px 16px}.side h2{font-size:18px;margin:0 0 24px}.side a{display:block;padding:10px 12px;border-radius:8px;margin:4px 0}.side a:hover{background:#26324a}.main{padding:28px;overflow:auto}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}.stat{background:#fff;border:1px solid var(--border);border-radius:12px;padding:18px}.stat b{display:block;font-size:26px;margin-top:6px}.actions{display:flex;gap:8px;flex-wrap:wrap}.badge{display:inline-block;padding:4px 8px;border-radius:99px;background:#eef2f7;font-size:12px}.login{max-width:420px;margin:100px auto}.section-title{display:flex;justify-content:space-between;align-items:center;margin:0 0 18px}.code{font-family:Consolas,monospace}.danger{color:var(--danger)}.ok{color:var(--ok)}@media(max-width:800px){.grid,.stats{grid-template-columns:1fr}.hero h1{font-size:28px}.links{gap:10px;font-size:14px}.admin-layout{display:block}.side{position:static}.main{padding:14px}.wrap{padding:16px}table{min-width:760px}.table-scroll{overflow:auto}}

/* 兑换码输入框使用等宽字体 */
textarea[name="codes"] {
    font-family: Consolas, "Courier New", monospace;
    font-size: 16px;
    letter-spacing: 0.3px;
}

/* 兑换码输入框 */
#codes {
    font-family: Consolas, "Courier New", monospace !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    letter-spacing: 0 !important;
    font-variant-ligatures: none !important;
}
