:root{color-scheme:dark;--bg:#080b12;--panel:#111722;--panel2:#171f2d;--line:#263246;--text:#edf2ff;--muted:#8d9ab1;--primary:#ff315b;--green:#32d583;--yellow:#f7b955;--blue:#5b8cff;--danger:#ff5c69;font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 80% 0,#17213a 0,transparent 30%),var(--bg);color:var(--text);min-height:100vh}button,input,select{font:inherit}.hide{display:none!important}.muted{color:var(--muted)}.error{color:#ff8791}.success{color:var(--green)}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);padding:34px;background:#101622eF;border:1px solid var(--line);border-radius:20px;box-shadow:0 30px 90px #0008}.logo{font-size:28px;font-weight:800;margin-bottom:8px}.login-card label,.form label{display:block;color:var(--muted);font-size:13px;margin:16px 0 7px}.input{width:100%;border:1px solid var(--line);background:#0b1019;color:var(--text);border-radius:10px;padding:12px 13px;outline:none}.input:focus{border-color:var(--blue)}
.btn{border:0;border-radius:10px;padding:11px 16px;color:white;background:var(--primary);cursor:pointer;font-weight:700}.btn:hover{filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.secondary{background:#273248}.btn.green{background:#178a59}.btn.danger{background:#7d2530}.btn.sm{padding:7px 10px;font-size:13px}.login-card .btn{width:100%;margin-top:22px}
.layout{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{border-right:1px solid var(--line);background:#0c111b;padding:22px 14px;position:sticky;top:0;height:100vh}.brand{font-weight:900;font-size:19px;padding:6px 10px 22px}.userbox{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:18px}.nav button{display:block;width:100%;border:0;background:transparent;color:var(--muted);text-align:left;padding:11px 12px;border-radius:9px;margin:3px 0;cursor:pointer}.nav button.active,.nav button:hover{background:#192233;color:white}.main{padding:26px;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.topbar h1{font-size:24px;margin:0}.grid{display:grid;gap:14px}.kpis{grid-template-columns:repeat(6,minmax(130px,1fr));overflow:auto}.card{background:linear-gradient(145deg,#131a26,#0f141e);border:1px solid var(--line);border-radius:14px;padding:17px}.kpi strong{display:block;font-size:25px;margin-bottom:6px}.kpi span{color:var(--muted);font-size:13px}.section{margin-top:18px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.section-head h2{font-size:18px;margin:0}.actions{display:flex;gap:8px;flex-wrap:wrap}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}.table{width:100%;border-collapse:collapse;min-width:900px;background:#0e141e}.table th,.table td{text-align:left;padding:11px 13px;border-bottom:1px solid #202b3d;font-size:13px;white-space:nowrap}.table th{color:#98a5bb;background:#141b27}.badge{display:inline-flex;padding:4px 8px;border-radius:99px;background:#273248;color:#ccd5e7;font-size:12px}.badge.PENDING{background:#473916;color:#ffd66b}.badge.RESERVED,.badge.QR_READY{background:#19395b;color:#85c5ff}.badge.PAID,.badge.RECHARGING{background:#174d39;color:#68efb5}.badge.FULFILLED{background:#13623f;color:#88f5bd}.badge.FAILED,.badge.EXPIRED,.badge.CANCELLED{background:#54232a;color:#ff9aa2}
.modal-backdrop{position:fixed;inset:0;background:#000a;display:grid;place-items:center;padding:20px;z-index:20}.modal{width:min(520px,100%);max-height:90vh;overflow:auto;background:#121925;border:1px solid var(--line);border-radius:16px;padding:22px}.modal h3{margin:0 0 8px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}.notice{padding:11px 13px;border-radius:9px;background:#172234;border:1px solid #2b3d59;color:#bcd3f7;margin:12px 0}.empty{padding:30px;text-align:center;color:var(--muted)}
.public-body{display:grid;place-items:center;padding:20px}.pay-shell{width:min(540px,100%)}.pay-brand{text-align:center;font-size:24px;font-weight:900;margin-bottom:18px}.pay-card{background:#111722;border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:0 30px 80px #0007}.amount-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}.amount{background:#17202e;color:white;border:1px solid #2b3a50;border-radius:12px;padding:15px 7px;cursor:pointer}.amount:hover,.amount.selected{border-color:var(--primary);background:#2a1721}.qrbox{background:white;border-radius:15px;padding:12px;width:280px;height:280px;margin:18px auto}.qrbox img{width:100%;height:100%}.pay-amount{text-align:center;font-size:36px;font-weight:900}.countdown{text-align:center;color:var(--yellow);margin:10px}.detail-list{border-top:1px solid var(--line);margin-top:15px;padding-top:8px}.detail-row{display:flex;justify-content:space-between;padding:7px 0;color:var(--muted)}.detail-row b{color:var(--text)}
.custom-amount{margin:20px 0 12px}.custom-amount label{display:block;margin-bottom:9px;color:var(--muted);font-size:14px}.custom-amount-row{display:flex;gap:9px}.custom-amount-row .input{min-width:0;flex:1}.custom-amount-row .btn{white-space:nowrap}.custom-amount #customAvailability{margin-top:9px;font-size:13px}.pay-footer{text-align:center;margin:28px 0 0;font-size:13px;line-height:1.6}
.payment-methods{display:flex;gap:9px;flex-wrap:wrap;margin:16px 0}.method-option{padding:9px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer}.method-option:has(input:checked){border-color:var(--primary);background:#2a1721}.method-option input{margin-right:6px;accent-color:var(--primary)}.check-option{display:inline-flex;align-items:center;gap:5px;margin:9px 14px 9px 0;color:var(--text)}
.badge.CREATING{background:#19395b;color:#85c5ff}
@media(max-width:850px){.layout{grid-template-columns:1fr}.sidebar{position:static;height:auto;border-right:0;border-bottom:1px solid var(--line)}.nav{display:flex;overflow:auto}.nav button{width:auto;white-space:nowrap}.main{padding:18px}.kpis{grid-template-columns:repeat(2,1fr)}.amount-grid{grid-template-columns:repeat(2,1fr)}}
