:root{--bg:#0f1115;--card:#171a21;--text:#e8eaf0;--muted:#9aa3b2;--accent:#5b8cff;--ok:#38c172;--warn:#f0b429;--border:#262b36;font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Inter,sans-serif}
@media (prefers-color-scheme: light){:root{--bg:#f4f6fa;--card:#fff;--text:#13161c;--muted:#5d6675;--border:#e3e7ee}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);line-height:1.45}
a{color:var(--accent)}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all}
.card{max-width:520px;margin:24px auto;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:24px;box-shadow:0 8px 30px rgba(0,0,0,.12)}
.checkout header{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}.brand{font-weight:600;color:var(--muted)}.amount{font-size:34px;font-weight:700}.amount span{font-size:16px;color:var(--muted)}
.muted{color:var(--muted)}.tiny{font-size:12px}.notice{background:rgba(240,180,41,.12);border:1px solid rgba(240,180,41,.4);padding:10px 12px;border-radius:10px}
.tabs{display:flex;gap:6px;margin:12px 0}.tab{flex:1;padding:8px;border-radius:10px;border:1px solid var(--border);background:transparent;color:var(--text);cursor:pointer}.tab.active{background:var(--accent);border-color:var(--accent);color:#fff}
.net{display:none;text-align:center}.net.active{display:block}.qr{width:220px;height:220px;border-radius:12px;background:#fff;padding:6px}
.addr{display:flex;gap:8px;align-items:center;background:rgba(127,127,127,.08);border:1px solid var(--border);border-radius:10px;padding:10px;margin:8px 0;text-align:left}.addr code{flex:1;font-size:13px}
button,.btn{background:var(--accent);color:#fff;border:0;border-radius:10px;padding:10px 14px;font-weight:600;cursor:pointer;text-decoration:none;display:inline-block}.small{padding:6px 10px;font-size:13px}.link{background:transparent;color:var(--accent);padding:6px 10px;font-size:13px}
.copy{background:transparent;border:1px solid var(--border);color:var(--text)}.copy.done{border-color:var(--ok);color:var(--ok)}.row{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:6px 0}
.timer{text-align:center;margin-top:12px}footer{margin-top:18px;text-align:center}
.spinner{width:36px;height:36px;border:4px solid var(--border);border-top-color:var(--accent);border-radius:50%;margin:16px auto;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.check{width:56px;height:56px;border-radius:50%;background:var(--ok);color:#fff;font-size:32px;display:flex;align-items:center;justify-content:center;margin:12px auto}
#stage-received,#stage-paid,#stage-closed{text-align:center}
label{display:block;margin:12px 0 4px;font-size:14px;color:var(--muted)}input,textarea,select{width:100%;padding:10px;border-radius:10px;border:1px solid var(--border);background:transparent;color:var(--text);font:inherit}
.setup{padding:12px;text-align:center}
/* dashboard */
.nav{display:flex;gap:16px;align-items:center;padding:12px 24px;border-bottom:1px solid var(--border);background:var(--card)}.nav a{color:var(--text);text-decoration:none;font-weight:500}.nav .right{margin-left:auto;color:var(--muted)}.nav .logo{font-weight:700;color:var(--accent)}
.wrap{max-width:1080px;margin:24px auto;padding:0 24px}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--muted);font-weight:500}
.pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;border:1px solid var(--border)}.pill.paid{color:var(--ok);border-color:var(--ok)}.pill.open,.pill.partially_paid{color:var(--warn);border-color:var(--warn)}.pill.cancelled,.pill.expired{color:var(--muted)}.pill.held_for_review{color:#ff6b6b;border-color:#ff6b6b}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:12px 0}.stat{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px}.stat b{display:block;font-size:22px}
.box{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px;margin:12px 0}.flash{background:rgba(56,193,114,.12);border:1px solid rgba(56,193,114,.4);padding:10px 12px;border-radius:10px;margin:12px 0}.error{background:rgba(255,107,107,.12);border:1px solid rgba(255,107,107,.4);padding:10px 12px;border-radius:10px;margin:12px 0}
form.inline{display:flex;gap:8px;align-items:end;flex-wrap:wrap}form.inline label{margin:0;flex:1;min-width:160px}
